2

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

令牌由 90 个字符组成,并且对于每个用户都是唯一的。例如,我会存储前 20 个字符。

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

我的 AES 加密设置是:

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

1 回答 1

3

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

于 2012-09-11T14:21:37.057 回答