簡體   English   中英

如何在PHP中將密碼以BCRYPT的形式存儲為數據庫中的$ 2a $ 15

[英]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.

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