2010-12-16 83 views
2

我正在研究一些代碼,並且在某個時候它正在準備一個存儲在數據庫中的密碼。在粗略僞代碼中,它執行以下操作:爲什麼要將密碼哈希截斷爲14個字符?

encrypted_password = truncate(hash(password), 14) 

即,計算密碼的散列,然後將散列截斷爲14個字符。


有誰知道爲什麼應用程序會以這種方式截斷哈希?這是非常慎重的,所以我懷疑它是讓哈希與我不知道的一些相當標準類型的密碼存儲兼容。

(請忽略這不是存儲密碼的好方法,沒有醃製,等。)

+0

如果它存儲在數據庫中,也許設計它的人創建了一個char(14)列......爲什麼我不知道 – Mikhail 2010-12-16 22:02:37

+0

只是爲了不同? – Mchl 2010-12-16 22:02:56

+0

這是美國在線嗎? – Arafangion 2010-12-16 22:07:10

回答

2

,我能想到的是保持與一些傳統系統兼容性的唯一原因。事實上,這是我可以考慮做出有意識的決定,無論如何犧牲安全的唯一原因。

考慮一個網絡,它具有瘋狂的舊UNIX盒子,例如,只能使用經典的crypt()函數使用八個字符的密碼。爲了讓他們對其他系統執行身份驗證,或者讓其他系統對這些傳統的UNIX系統執行身份驗證,每個人都必須使用相同的方法來操作身份驗證數據。

實際上,通過網絡傳輸密碼(散列,散列+鹽化或其他)的唯一原因是爲了堅持傳統系統或系統,否則我會稱之爲「傳統要求」。對安全意義上相對較弱的系統也是如此。

+0

我會將此標記爲正確 - 儘管目前我無法確定這是否是真正的原因。 – pauldoo 2010-12-17 14:47:30

相關問題