自定义开发-加密数据查询

2022-10-28  本文已影响0人  CoderInsight

1,加密数据的查询

(1),基础查询

以加密电话号码为例,可以选择的方式:

-- 加密方法:value为需要加密的明文,当然也可以是表中某一列的名称,key为加密使用的密钥
AES_ENCRYPT(value,key)
-- 解密方法:value为需要解密的密文,可以为解密的密钥
AES_DECRYPT(value,key)

(2),模糊查询

通过对密文数据进行分词组合,将分词组合的结果集分别进行加密,然后存储到扩展列,查询时通过key like '%partial%';但是,一般情况下要满足大于4位英文字符(半角),2个中文字符(全角),然后才可以做为一个检索条件。
wingyu2使用4个字符为一组的加密方式,第一组wing ,第二组ingy ,第三组ngyu ,第四组gyu2 … 依次类推。
如果需要检索所有包含检索条件4个字符的数据比如:ingy ,对该字符串加密之后后通过 key like “%partial%” 查库。
我们都知道加密后长度会增长,增长的这部分长度存储就是我们要花费的额外成本,典型的使用成本来换取速度。

补充:

1,Hash散列算法

Hash散列算法可以通过类比人的指纹来理解,它可以是一个文件的“指纹”,那么我们就可以通过Hash散列算法去校验文件的可靠性。比如,我们在MySQL官网下载文件的时候,他会有提示该文件的hash值,我们可以在Linux系统中通过md5sum这个命令来计算对应下载文件的hash值,如果相等则说明文件被完整下载了。

Hash散列算法的核心目标转换具有相同长度、不可逆的消息摘要。
对比其他的加密算法,是将目标文本转成具有不同长度的,可逆的密文。Hash算法严格上来说并不属于加密算法,而是与加密算法属于并列关系的一种算法。

通过hash加盐的方式可以一定程度上进一步的保证数据的安全性。

参考连接

上一篇 下一篇

猜你喜欢

热点阅读