欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

mysql - php 二进制加密数据如何保证数据唯一性?

程序员文章站 2022-04-01 22:02:05
...
公司数据库里的用户敏感数据需要加密成二进制密文存在mysql blob类型字段里,现在发现要保证用户数据的唯一性不好弄, 因为发现blob类型字段似乎不能直接进行逻辑运算,也不能把表里的密文全读出来解密一遍再进行逻辑运算吧

回复内容:

公司数据库里的用户敏感数据需要加密成二进制密文存在mysql blob类型字段里,现在发现要保证用户数据的唯一性不好弄, 因为发现blob类型字段似乎不能直接进行逻辑运算,也不能把表里的密文全读出来解密一遍再进行逻辑运算吧

根据用户id缓存密文md5

我觉得应该这样做:

  1. 新增数据在加密前对明文进行md5哈希,然后存个hash后的值(加密后的blob当然也要存)

  2. 而已有的数据则需要找个时间全部解密md5下,然后存放下hash后的值

这样判断唯一性则直接判断hash后的值一般就行了。

不推荐对密文进行md5 -- 除非你能确保相同的明文加密后总是能产生同样的密文。然而密文至少会受到密钥的影响,换密钥后肯定密文会变掉... 况且有些加密方式本身带有随机化的初始向量,每次加密出来的密文是不同的。

直接mysql内置方法 hex()

相关标签: php mysql blob