我正在閱讀本教程,我正在使用ENCRYPT MySQL函數。MySQL ENCRYPT密碼但如何解密?
但現在我有一個如何在MySQL或在PHP解密加密的密碼問題?我想比較輸入的密碼是否與加密密碼相同。
我該如何比較? MySQL必須使用ENCRYPT函數加密!
我正在尋找,但我無法找到任何東西如何解密加密的MySQL函數...
我正在閱讀本教程,我正在使用ENCRYPT MySQL函數。MySQL ENCRYPT密碼但如何解密?
但現在我有一個如何在MySQL或在PHP解密加密的密碼問題?我想比較輸入的密碼是否與加密密碼相同。
我該如何比較? MySQL必須使用ENCRYPT函數加密!
我正在尋找,但我無法找到任何東西如何解密加密的MySQL函數...
不能解密的密碼 - 它與單向加密方法加密。
你需要做的是加密輸入的密碼,並將結果與存儲的加密密碼進行比較。
ENCRYPT
正在使用單向散列算法,沒有DECRYPT
..這就是加密密碼的含義:黑客應該沒有選項來查看明文密碼。
當你需要比較數據庫密碼與一個用戶輸入,使用這樣的查詢(使用準備好的查詢)
SELECT * FROM `user`
WHERE `name` = 'hek2mgl`
AND `password` = ENCRYPT('user_input', `password`)
的ENCRYPT
功能將輸出一個「鹹魚」的字符串前面加上鹽本身,所以反饋加密的密碼將重新提供原鹽。
您不需要解密密碼。爲了檢查用戶是否提交了正確的密碼,只需重新加密用戶給出的密碼,並檢查它是否與存儲在數據庫中的密碼相符。
Moreoever,一個簡單的哈希函數就足夠了(避免MD5和使用的鹽,以防止字典或彩虹表攻擊!)
所以你建議加密('passwor','dsljfljfsdljfljsdf') – senzacionale 2013-05-10 15:48:05
我建議$ hashed_pass = sha1(「password + salt」) ;。在每次散列密碼時都應該使用salt,您可以從用戶數據生成salt,保密鹽生成過程,將其存儲在db中,並確保它對每個用戶都是唯一的。 – 2013-05-10 15:50:36
如果你試圖解密密碼,你*做錯了*。 – 2013-05-10 15:42:46
你比較了encrypt()ed散列'select ... where savedhash = encrypt('newpassword')'。 – 2013-05-10 15:42:49
奇怪的教程告訴你如何加密它,但不是如何處理它,一旦它被加密。 – Spudley 2013-05-10 15:45:41