我正在尝试加密所有公司数据。但是当我想要解密它们时,我只会看到空值。我在加密后检查了我的数据,它看起来是加密的。
这是我的密码
update TCB set Company=aes_encrypt(Company,'1234') WHERE Company= CONVERT(Company USING ASCII);
//I added where clause in case if there is any Encrypted data
select *,cast(aes_decrypt(Company,'1234') as char(100)) from TCB;
提前谢谢
1条答案
按热度按时间lpwwtiir1#
AES_ENCRYPT()
返回二进制字节,而不是文本。当您将加密的数据保存到同一列(我假设该列是带有字符集的varchar或text列)时,它试图将二进制字节解释为该列字符集中的编码。很可能许多字节都不是该字符集的有效编码,因此最终会产生无法解密的垃圾数据。您应该将加密数据保存到varbinary或blob列。这些数据类型没有字符集,它们只存储二进制字节。
另一种解决方案是在将二进制字节转换为十六进制数字的可打印字符串后存储加密数据。