mongodb:encryption字段上的唯一索引

我正在用mongodbencryptionSSN。 但是,我需要使用SSN作为唯一的标识符,以确保具有该SSN的人不会插入重复。 所以基本上我想在保存之前检查重复的SSN。 不过,我不确定是否可以在使用AESfunctionencryption此字段后执行此操作。 如果我encryption并签名与AES相同的2个string,输出是否仍然相同?

如果不是,那么将会是一个好的select? 我曾经考虑过对SSN进行哈希处理,但SSN似乎有这么小的熵(它的9位数字,其中有些是可以预测的)。 如果我盐,我失去了在这个领域分配一个独特的索引的能力,除非我使用一个静态的盐,这并没有多大的作用。

加成

我将使用node.jsencryption核心模块在应用程序级进行encryption。

使用相同的对称AES密钥来encryption2个相同的string将产生相同的输出。 因此,您可以通过将encryption字段与使用相同密钥encryption的值进行比较来确定encryption字段是否唯一。

的PoC:

var crypto = require('crypto'); var cipher = crypto.createCipher('aes-256-ctr', "someString"); var cipher2 = crypto.createCipher('aes-256-ctr', "someString"); var crypted = cipher.update("hello world",'utf8','hex'); var crypted2 = cipher2.update("hello world",'utf8','hex'); crypted === crypted2 //true