2015-06-19 76 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或其他? –