我對你們一個簡單的問題:使用BASE64_ENCODE使用PHP函數crypt()函數時
我用PHP修修補補(我是相對缺乏經驗),以及有興趣開發一個安全的密碼散列系統使用我的網站。通過關於SO的其他文章和問題,我推測我應該使用PHP的crypt()
函數來實現BSD的bcrypt
哈希算法。
我給你的問題涉及這樣一個事實:當我給函數提供初始化向量或密碼時,不是base64的輸入似乎返回一個「0」作爲散列。以下是我已經實現瞭解決此問題:
$salt = base64_encode(mcrypt_create_iv(16, MCRYPT_DEV_URANDOM));
和
$password = base64_encode($password);
是否有碰撞的危險或當我改變這樣的編碼,否則降低安全性?
我的想法是,我想允許用戶使用任何範圍的字符作爲他們的密碼(我將執行一個很好的密碼策略),而不必擔心我的散列函數返回一個空的散列。
有沒有更簡單或更優雅的方法來做到這一點?我是否應該使用不限制我的salt和密碼的散列函數?
在此先感謝您提供的任何幫助。
在你的情況下,'base64_encode'不應該有任何用處,因爲它總是可逆的,並且在安全性方面沒有任何區別。使用[base64](http://en.wikipedia.org/wiki/Base64)是將二進制文件表示爲一個字符串。 – 2012-07-23 05:33:30
如何使用[便攜式PHP密碼哈希框架](http://www.openwall.com/phpass/)? – 2012-07-23 05:35:03
「當我給函數提供一個初始化向量或密碼時,不是base64的輸入似乎返回一個」0「作爲散列」...什麼? – 2012-07-23 05:35:43