簡體   English   中英

使用mcrypt獲取密碼salt。 本地Apache服務器上的執行時間很快,但Web主機上的執行時間非常慢

[英]Using mcrypt to get a password salt. Execution time is fast on local apache server, but very slow on web host

$salt=bin2hex(mcrypt_create_iv(64, MCRYPT_DEV_RANDOM));

這是我目前創建密碼鹽的設置。 我注意到,當我將注冊頁面上傳到Web主機時,頁面執行大約需要1分鍾,而在我的本地apache服務器上它是即時的。 我把問題縮小到這行代碼。 您是否了解此功能的任何執行時間問題,或者是否有更好的方法來獲取鹽串(128長度)?

問題在於MCRYPT_DEV_RANDOM參數,從中讀取將阻止服務器,直到有足夠的熵可用。 相反,你應該使用:

$binarySalt = mcrypt_create_iv(64, MCRYPT_DEV_URANDOM);

從URANDOM讀取是生成鹽的最佳選擇,它最初從RANDOM中獲取,但如果沒有足夠的熵可以阻止它。 這也可以防止有人通過你的功能消耗服務器的委托池。

根據您使用的哈希函數, bin2hex()函數不是最佳的,因為結果字符串的字母表是有限的。 您應該允許散列函數接受的所有字符。

由於PHP現在有自己的api來生成BCrypt哈希,我建議直接使用這個函數password_hash() ,它確實會創建一個安全的鹽。 早期的PHP版本還有一個兼容包。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM