我的系统使用AES / CBC加密将用户的电子邮件地址存储到数据库。所以那些电子邮件地址都存储在加密文本中(base64)。每次即使纯文本相同(它是CBC模式)
也会生成不同的加密文本有没有办法只使用某人的数据库电子邮件地址的子字符串来搜索电子邮件地址?
e.g。从AES / CBC加密版'itsmyemail@email.com'中搜索'myemail'
AFAK这是不可能的,但我不确定有什么办法我还不知道。
答案 0 :(得分:0)
就像你说的那样,使用like "%substring%"
搜索带子字符串或SQL请求的电子邮件是不可能的。
您可以执行的唯一搜索是全文:select * from your table where email="john.doe@email.com"
要执行此操作,您可以在表格中添加字段。此新字段包含使用不同AES密钥的明确值的HMAC。人们称之为“盲目指数”。因此,此字段已编制索引,当您想要从清除值中搜索时:
select * from your table where email_blindindex="HMAC_value"