[英]What is the use of password hashing if it could be easily decrypted ?
密碼是mySQL
數據庫,應以哈希形式保存
echo password_hash('test', PASSWORD_BCRYPT);
給我們
$2y$10$8PxsFGPbGtgYb44GRPL84ev2T0xR0LXMSSKm7cuSBUbAU114mosFG
要么
$2y$10$E.q3bVE9EE2ce2VaKPJgtuwEMRZxpTYiQR6Mw2dmLGqeKx/PsQY42
要么 。 。 。
但是所有這些$2y$10. . .
$2y$10. . .
使用password_verify
可以輕松地將字符串解密回進行test
。
假設有人可以訪問哈希密碼,那么她將能夠使用password_verify
解密password_verify
? 一旦有人擁有字符串$2y$10$E.q3bVE9EE2ce2VaKPJgtuwEMRZxpTYiQR6Mw2dmLGqeKx/PsQY42
他或她就可以輕松地將其轉換回純文本,對嗎? 那么為什么要哈希密碼呢?
這個說法
但是所有這些$ 2y $ 10。 。 。 使用password_verify可以輕松地將字符串解密回進行測試。
是不正確的。
因為password_hash()
是單向哈希。
這意味着(實際上)沒有辦法從散列字符串返回到原始字符串。
password_verify()
不會解密散列(因為這是不可能的)。 更簡單地說,它對要驗證的密碼進行哈希處理,並檢查生成的哈希是否與所提供的哈希匹配。
您似乎對password_verify
函數中輸入的數據和輸出的數據有誤解。 在“解密”過程中,您輸入哈希應該代表的實際密碼。 必須知道密碼才能對其進行驗證。
password_verify
作用是使用與給定的散列相同的方法對您再次提供的密碼進行散列,並檢查兩者是否匹配。
因此,不可能使用password_verify
輕松反轉哈希。 您將不得不蠻力瀏覽密碼以查找與哈希匹配的密碼。
注意:如果我們談論密碼哈希,則不能將其稱為加密,因為它是單向的,加密將具有相應的解密功能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.