簡體   English   中英

如果可以很容易地解密密碼哈希,有什么用?

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

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