[英]How to store a password as BCRYPT in a database as '$2a$15' in PHP
我想知道如何將密碼存儲為以$2a$15
開頭的BCRYPT
,因為我已經設置了寄存器,並且已經將密碼存儲在BCRYPT
。
但是,當它將密碼存儲為BCRYPT
,輸出為$2y$15
,但我希望它為$2a$15
。 我是BCRYPT
,我很難理解。
無論如何,這是我的BCRYPT
代碼:
function encryptedPassword($strPassword) {
$strSHA256 = hash('sha256', $strPassword);
$strBcrypt = password_hash($strSHA256, PASSWORD_BCRYPT, array('cost' => 15, 'salt' => bin2hex(openssl_random_pseudo_bytes(12))));
return $strBcrypt;
}
所以,說我的密碼是否為Hello123!
。 輸出為:
$2y$15$aa979703a103b0a45b2afO0KS15RjWu5Lc8sa4.xQlsw9QLtyhp/O
我希望它是:
$2a$15$aa979703a103b0a45b2afO0KS15RjWu5Lc8sa4.xQlsw9QLtyhp/O
我不知道這是否與食鹽有關,有人可以幫我嗎?
從PHP手冊:
PASSWORD_BCRYPT-使用CRYPT_BLOWFISH算法創建哈希。 這將使用“ $ 2y $”標識符生成標准的crypt()兼容哈希。 結果將始終為60個字符串,否則為FALSE。
因此,使用BCRYPT將始終產生$ 2y $。 順便說一句,哈希的開頭部分只是一個標識符,用於隨后使用password_verify測試密碼。 就像您的情況中的$ 15 $是哈希算法的成本...
我建議您閱讀有關PHP密碼哈希的更多信息。 絕對沒有理智的理由為什么您希望哈希絕對以X或Y開頭...
PHP的人們一直在努力為您提供安全的密碼哈希函數。 您應該真正嘗試使用它們,而不用亂砍東西。 哈希哈希比哈希一次更安全。 salt選項在PHP7中已被棄用,建議您擺脫它,PHP比您可以更好地處理它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.