我想使用mysql上的sql对数据库中的字段进行解密,但在解密之前,我需要检查这些字段是否可以解密。
update customer
set name = aes_decrypt(from_base64(name), 'key')
如果提供的键错误或数据无效,则名称字段将设置为null;
我尝试添加了一个where子句,如下所示,以确保字段名尚未解密,但这并不总是有效的,因为如果密钥不正确或数据无效,aes_decrypt可以返回null或垃圾。
update customer
set name = aes_decrypt(from_base64(name), 'key')
where aes_decrypt(from_base64(name), 'key') is not null.
那么,如何检查返回的值是空值还是“垃圾”值?或者还有什么其他的方法?
mysql:“如果输入数据或键无效,AES_DECRYPT()可以返回一个非空值(可能是垃圾)。”
垃圾示例:W�Y�‘v��Y�m��_
谢谢
发布于 2016-03-25 18:51:04
不要存储原始的密文,而是遵循解除安全性的PHP加密库版本2的要求
然后问题变成“字符串的第一个N字节是否计算为我的加密库的已知版本标记”?
https://stackoverflow.com/questions/36205727
复制相似问题