簡體   English   中英

PHP中的password_hash()怎么樣?

[英]What about password_hash() in PHP

我一直在閱讀各種關於這個password_hash()的論壇和教程,它們似乎對密碼保護有好處。

但現在我想知道是否最好為函數制作一個自己的salt和hash

$options = [
    'cost' => 11,
    'salt' => mcrypt_create_iv(22, MCRYPT_DEV_URANDOM),
];
password_hash($password, PASSWORD_BCRYPT, $options);

或者只是讓功能執行:

password_hash($password, PASSWORD_DEFAULT);

關於使用自己的鹽是好還是壞,似乎有很多討論。

有人可以解釋為什么使用自己的鹽是壞的(或不是)?

因為如果你不創建自己的鹽,它會自動為你創建一個安全的鹽。

從文檔:

警告

強烈建議您不要為此功能生成自己的鹽。 如果您沒有指定,它將自動為您創建安全鹽。

所以,為了回答你的問題,如果你不了解更多關於鹽或其他...只是不要使用自己的鹽,這個功能足夠強大!

鹽只是對彩虹桌攻擊的保護。
它不會使一個哈希更難以打破,而是更大的整體。
如果您為每個哈希使用不同的salt,攻擊者將需要為每個密碼創建一個彩虹表。
這在工作和時間方面是不切實際的。
使用偽隨機rng生成salt將完成保護更大密碼的工作。
https://crypto.stackexchange.com/questions/1776/can-you-help-me-understand-what-a-cryptographic-salt-is

由於該函數已經生成了一個安全的鹽,因此不建議使用實際上更差的rng來生成自己的鹽。
只需讓這個功能產生強鹽,它就會很好,而且你也不需要自己創造鹽就可以減少工作量。 正確創建鹽漬哈希密碼的方法

從以前的鏈接引用:

建議您不要傳遞自己的salt,而是讓該函數從操作系統的隨機源創建加密安全的salt。

salt將包含在生成的哈希值中,因此您不必單獨存儲它。 只需在數據庫中創建一個60個字符的字符串字段並存儲哈希值。 函數password_verify()將從存儲的哈希值中提取使用過的salt。 有關更多信息,您可以查看我的有關存儲密碼的教程。

暫無
暫無

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

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