2015-06-19 97 views
1

在我的機器WAMP,AES_ENCRYPT和AES_DECRYPT要求不工作,我也用的編碼和解碼,併發生相同測試...我不是understading爲什麼...MySQL的AES_DECRYPT錯誤/奇怪的結果

SELECT 
AES_ENCRYPT('text', SHA1('My secret passphrase')) as enc, 
AES_DECRYPT(AES_ENCRYPT('text', SHA1('My secret passphrase')), SHA1('My secret passphrase')) as denc 

結果:

ENC:3278167d9d630327c74d83067964c9b6
DENC:加密後的74657874

文字不好看和解密是錯了。

有什麼建議嗎?

回答

2

即使在你身邊,它仍在工作,但它是你看到的blob數據。

DENC:74 65 78 74

74 = T 65 = E 78 = X 74 = T,加在一起你會得到 '文'

ASCII表在這裏:http://www.asciitable.com/

試試吧與cast使其更明顯:

SELECT cast(AES_ENCRYPT('text', SHA1('My secret passphrase')) as char(100)) as enc, 
cast(AES_DECRYPT(AES_ENCRYPT('text', SHA1('My secret passphrase')), SHA1('My secret passphrase')) as char(100)) as denc 
+0

它的工作原理,除了enc返回空白,denc返回正確的'文本'。爲什麼會發生?我看到一些在線示例,並且它們不需要爲它工作/顯示實際值 –

+1

enc不是空白,它僅僅是不漂亮的視覺效果,在某些gui上它根本不顯示。如果你選擇一個enc變量,然後發送通過解密你回到「文本」。它在那裏。這是十六進制的廢話,這對你來說毫無意義 – Drew

+0

好的感謝您的解釋。其他問題,我有,即時尋找一個很好的解決方案存儲PrivateKeys在數據庫中,我應該使用什麼來保持該密鑰?我需要一個好的和穩定的加密。 AES_ENCRYPT或ENCODE或其他? –