密文模糊搜索的实现
what is it
希望既能够满足隐私数据加密存储的需求,又能够满足对加密后的数据实现模糊搜索的需求
how to do
- 将待加密的数据按照 x 个字符或 x 个汉字进行分组
- 依次加密所有的分组并拼接在一起组成一个加密后的字符串存储到某个字段中
- 将需要模糊搜索的字符串加密后,在 sql 中
like
来模糊匹配
举例:
1632155
按照每 3 个字符进行分组:163
,632
,321
, ....- 对每个分组进行加密,并拼接在一起存储到字段
encrypted_group_data
字段中 - 利用 sql 进行查询,
encryptedQueryData=encrypt("321"); where encrypted_group_data like '%encryptedQueryData%'
limited
- 查询的字符串必须
>=
分组的字符或汉字格式 - 该方式实际上是使用存储成本来换取功能实现,会增加存储成本
other method
这里只是记录一下,存在的更高级的方式,并没有去深究:
- 模糊匹配函数/算法