簡體   English   中英

MySQL ENCRYPT密碼但是如何解密?

[英]MySQL ENCRYPT password but how to DECRYPT?

我正在閱讀本教程,並且正在使用ENCRYPT MySQL函數。

http://www.pixelinx.com/2010/10/creating-a-mail-server-on-ubuntu-using-postfix-courier-ssltls-spamassassin-clamav-and-amavis/

但是現在我有一個問題,如何在MySQL或php中解密加密的密碼? 我想比較一下輸入的密碼是否與加密的密碼相同。

我該如何比較? MySQL必須使用ENCRYPT函數加密!

我正在搜索,但找不到任何如何解密ENCRYPT MySQL函數的信息...

ENCRYPT使用的是一種單方法哈希算法,沒有DECRYPT ..這就是加密密碼的含義:黑客不應選擇查看明文密碼。

當您需要將db中的密碼與用戶輸入的密碼進行比較時,請使用這樣的查詢(使用准備好的查詢)

SELECT * FROM `user`
WHERE `name` = 'hek2mgl` 
  AND `password` = ENCRYPT('user_input', `password`)

ENCRYPT函數將輸出以鹽本身為前綴的“鹽漬”字符串,因此將加密的密碼反饋給它將重新提供原始鹽。

您無法解密密碼-該密碼已通過單向加密進行了加密。

您需要做的是加密輸入的密碼,並將結果與​​存儲的加密密碼進行比較。

您不需要解密密碼。 為了檢查用戶是否提交了正確的密碼,只需重新加密用戶提供的密碼,然后檢查它是否與數據庫中存儲的密碼匹配。

而且,簡單的哈希函數就足夠了(避免使用MD5,並使用鹽來防止字典或彩虹表攻擊!)

暫無
暫無

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

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