我正在使用nodeJs和mongoDb设计微服务架构。我有一个用例来保存驾驶执照号码,该号码也可用于验证用户。现在,由于DL号是PII,所以我不想按原样保存字符串,因此我想在保存之前对其进行加密。我可以每次使用加密逻辑生成一个通用的加密字符串,因此可以加密DL号并在db中进行查找。但是我担心黑客如果知道一个的加密逻辑,就可以解密并获得所有DL号。有人可以建议我这种用例的最佳方法吗?
答案 0 :(得分:2)
暂时忽略索引,听起来最好的方法是使用键控哈希来哈希许可证编号,并存储哈希。这类似于对称加密,因为您需要保守秘密密钥。但是,这是一种单向方式,因此获取机密的攻击者仍然需要对每个条目进行暴力破解以获取数字。
如果密钥被盗用,则根据许可证编号方案的不同,对每个编号进行强行强制破解的难度从易用到琐碎。但是,这比纯文本要好。
但是,如果您确实需要它作为索引,则您的优先级似乎有所冲突。我会请别人,我对数据库索引了解不多。
如果是我,并且我有时间闲暇,我会设置一张带有散列的表,一张带有明文许可证号作为索引的表。添加一千万行(或与您有关的上限)测试数据,并对每个数据进行数千次随机查找。