2013-07-18 21 views
0

程序A:理念對OTP與時限

哈希(用戶名,密碼和nowtime())

* nowtime()被定義爲:

Calendar cal = Calendar.getInstance(); 
cal.getTime() 

方案B:

Hash(用戶名,密碼和nowtime())

*程序B做了一個循環(最多15秒),每個nowti我()被定義爲:

Calendar cal = Calendar.getInstance(); 
cal.add(Calendar.SECOND, -1); 

儘管從兩個節目時間相匹配時,從OTP相同的散列函數產生的是不同的。我不需要代碼,請幫我理解2程序之間的同步時間。

+0

Hash的實現是什麼,它屬於哪個類? –

+0

MD5哈希。然後我做了int pin =(int)(hashtext.hashCode()%1e6);獲取PIN –

回答

0

Calendar.getTime()以1毫秒的分辨率返回時間。因此,兩臺計算機的毫秒值肯定是不同的(或者純運氣它們也是一樣的)。

當您的解決方案去了你就必須處理

cal.set(Calendar.MILLISECOND, 0); 

,那麼你至少應該有一個比賽之前設置毫秒到0