2011-02-12 45 views
0

我想了解我正在工作的系統是如何從數字代碼開始創建一些散列代碼的。我正在收集其中一些「small_number,big_number」對,但我無法弄清楚系統如何編碼small_number以獲取big_number。解碼是可能的,因爲系統可以從big_number獲取small_number。反向散列函數

數字看起來像這樣:

 
197 >> 29337857947107767585 

1078 >> 84080031635590040762 

1083 >> 32373003898332638476 

1409 >> 79402294967209014727 

1498 >> 25254493910542918727 

2945 >> 85687067382221703925 

2946 >> 88767616208189692328 

我不知道的。你能指出一些閱讀嗎?

謝謝

+1

如果這個過程可以很容易地顛倒過來,那不是使用哈希算法。你對這個算法有什麼看法? – driis

+0

如果您向系統提供長度超過20位的數字代碼,會發生什麼情況? – CodesInChaos

回答

1

如果系統能夠扭轉函數,該函數是不是一個散列函數所有,但一個cipher

它看起來像輸出始終是一個20位數的數字 - 您是否嘗試在非數字輸入或大於20位數字的字符串上進行測試?

在這兩種情況下,系統可能會使用衆所周知的加密算法(我的猜測是AESDES),所以如果沒有密鑰,猜測函數是不可行的。更糟糕的是,如果系統沒有直接接收輸入信息,而是添加其他信息,那麼您可能擁有正確的算法和密鑰,但仍然沒有意識到它。

+0

它不能是AES,因爲AES的塊大小至少爲128位,而20位十進制數字串只有66.4位。 – CodesInChaos

+0

它可以 - 你總是可以截斷(我已經使用SHA並截斷爲10個base64字符來爲應用程序生成密碼) – Vanwaril