首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AES_DECRYPT如何检查已在mysql中解密的值

AES_DECRYPT如何检查已在mysql中解密的值
EN

Stack Overflow用户
提问于 2016-03-24 16:51:44
回答 1查看 1.2K关注 0票数 2

我想使用mysql上的sql对数据库中的字段进行解密,但在解密之前,我需要检查这些字段是否可以解密。

代码语言:javascript
运行
复制
update customer
set name = aes_decrypt(from_base64(name), 'key')

如果提供的键错误或数据无效,则名称字段将设置为null;

我尝试添加了一个where子句,如下所示,以确保字段名尚未解密,但这并不总是有效的,因为如果密钥不正确或数据无效,aes_decrypt可以返回null或垃圾。

代码语言:javascript
运行
复制
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��_

谢谢

EN

回答 1

Stack Overflow用户

发布于 2016-03-25 18:51:04

不要存储原始的密文,而是遵循解除安全性的PHP加密库版本2的要求

  1. 使用认证加密
  2. 使用version标记,它告诉您使用了什么库,以及您需要添加的版本和任何可选的配置信息。
  3. 确保计算的是HMAC(标记\x_(标记_
  4. 将标记、IV/nonce、密文和MAC存储在一起;最好是作为十六进制或base64 64编码的字符串存储。

然后问题变成“字符串的第一个N字节是否计算为我的加密库的已知版本标记”?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36205727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档