mysql - php 二进制加密数据如何保证数据唯一性?
程序员文章站
2022-05-12 23:02:30
...
公司数据库里的用户敏感数据需要加密成二进制密文存在mysql blob类型字段里,现在发现要保证用户数据的唯一性不好弄, 因为发现blob类型字段似乎不能直接进行逻辑运算,也不能把表里的密文全读出来解密一遍再进行逻辑运算吧
回复内容:
公司数据库里的用户敏感数据需要加密成二进制密文存在mysql blob类型字段里,现在发现要保证用户数据的唯一性不好弄, 因为发现blob类型字段似乎不能直接进行逻辑运算,也不能把表里的密文全读出来解密一遍再进行逻辑运算吧
根据用户id缓存密文md5
我觉得应该这样做:
新增数据在加密前对明文进行md5哈希,然后存个hash后的值(加密后的blob当然也要存)
而已有的数据则需要找个时间全部解密md5下,然后存放下hash后的值
这样判断唯一性则直接判断hash后的值一般就行了。
不推荐对密文进行md5 -- 除非你能确保相同的明文加密后总是能产生同样的密文。然而密文至少会受到密钥的影响,换密钥后肯定密文会变掉... 况且有些加密方式本身带有随机化的初始向量,每次加密出来的密文是不同的。
直接mysql内置方法 hex()