AES:存储加密数据的明确部分以供搜索

时间:2012-09-11 12:14:12

标签: database encryption aes

我使用AES加密敏感文本标记并将其存储在数据库中。我想部分搜索这些令牌,而不仅仅搜索完全匹配。 解密所有令牌会太慢,所以我的想法是将令牌的开头作为明文保存在数据库的另一列中。

令牌为90个字符,对每个用户都是唯一的。我会存储例如20个第一个字符。

如果有人获得了数据库的副本,这是一个安全问题,我的意思是重建具有明确部分的完整令牌会更容易吗?

我的AES加密设置为:

  • 带有32字节加密密钥的AES-128。
  • 加密模式是CBC。
  • IV对每个令牌都是唯一的。

1 个答案:

答案 0 :(得分:3)

为每个值(或每个值的第一部分,如果它们很长)创建一个哈希值,例如具有10,000次迭代的PBKDF2的前20个字节,并将其存储为单独的字段/列。要检查值,请执行相同的操作并针对新字段进行检查。新字段中的值不可逆,比较操作便宜(直接二进制比较)。