一起使用我正在使用bcrypt來哈希我的密碼,似乎symfony2身份驗證系統不是生產與php的本地crypt函數相同的哈希值。貝婁是我產生了我的用戶密碼的鹽:我只是做如何獲得symfony2安全BCRYPT編碼器與php crypt()函數
$salt = '$2y$13$' . substr(md5(uniqid(rand(), true)),0,21) . '$';
$this->setPassword('test',$salt);
在我security.yml文件:
encoders:
Blogger\BlogBundle\Entity\User:
algorithm: bcrypt
iterations: 13
是否有任何理由爲什麼兩種編碼方法會產生不同的哈希?我使用的庫是ircmaxell/password-compat。
請您提供用於測試的crypt函數的代碼。也許這是迭代次數? – nifr
Symfony的最新版本?另外,爲什麼你要手動設置鹽?另外,爲什麼你以這種可怕的方式產生鹽? Symfony會爲你做這個。你爲什麼試圖讓它比需要的更困難?證明:[Symfony的源代碼](https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Security/Core/Encoder/BCryptPasswordEncoder.php#L48) – ircmaxell
這是一個預期的行爲,每次都會得到不同的散列值,因爲每次計算都會生成一個不同的(隨機)鹽。攻擊者通過這種方式無法判斷兩個用戶是否輸入了相同的密碼。如果你想測試哈希,那麼只需測試驗證失敗/成功。 – martinstoeckli