3 回答
TA貢獻1825條經(jīng)驗 獲得超4個贊
你可能正在尋找
password_hash ( string $password , int $algo [, array $options ] ) : string
https://www.php.net/manual/en/function.password-hash.php
TA貢獻1828條經(jīng)驗 獲得超13個贊
找到了一個實際的解決方案。通過強制加鹽,事實證明 PHP 將無效的“$2”STD_DES 加鹽解釋為“q2”。
因此,這個問題的答案是可以在較新版本的 PHP 中驗證這些散列,方法是更改用于比較散列的鹽,使其以“q2”而不是“$2”開頭。從那里開始,可以substr_replace($str, '$', 0, 1);在執(zhí)行相等性檢查時調用將新添加的“q”字符替換回“$”字符。
作為一個軼事,顯然我得到的信息是不正確的,并且哈希值是在 PHP 5.3.29 中生成的,這與文檔所說的退回到在版本 5.3.2 中修補的 STD_DES 相矛盾。
TA貢獻1848條經(jīng)驗 獲得超2個贊
作為一種解決方法,我最終實際上將舊版本的 PHP 用于單個目錄,我可以在其中調用file_get_contents()并使用舊的(錯誤的)算法檢索哈希,但在其他地方仍然使用更現(xiàn)代的 PHP 版本。
然而,這不是一個合適的解決方案,因為它在技術上沒有回答這個問題: “我如何在更新版本的 PHP 中驗證這些格式錯誤的密碼?”
因此,除非似乎沒有其他可能的解決方案,否則我不會將此標記為已接受的答案(但我認為為了完整性起見應該添加此答案)。
- 3 回答
- 0 關注
- 144 瀏覽
添加回答
舉報
