我正在考虑散列敏感ID数据的小块,但是我需要在整理数据块时保持整个的完全唯一性。
所以,我提出了加密一些公知的输入数据(比如128位零)的想法, 使用我想要混淆的数据作为密钥/密码,然后抛出它远离 ,从而保护原始数据不被发现。
我已经了解哈希算法,但我的问题是我需要 保持完全唯一性 (一般来说是 1:1映射输入到输出)仍然 使得无法检索实际输入。 哈希不能提供此功能,因为信息在此过程中丢失。
没有必要在“加密”后检索数据。从那时起它只能用作身份证号码。
实际的GUID / UUID在这里不合适,因为我需要在每个标识符的基础上手动控制标识符。 ID不能是未知的或任意生成的数据。
编辑:准确说明 这些标识符的构成:
整个事情应该总计192位,但加密部分的内容大小可能会有所不同(这绝不是最终规范)。
假设:
AES键是否会以导致1:1 key<---->output
映射的方式处理,是否给定相同的输入和IV值?
答案 0 :(得分:3)
没有。摘要中,AES是一系列排列,您可以使用密钥选择随机排列。对于其中一种排列(即,在给定的AES密钥下进行加密),您将不会发生冲突,因为排列是双射的。
然而,对于两种不同的排列(即在不同的AES密钥下加密,这就是你所拥有的),我们无法保证你不会发生碰撞。事实上,由于生日悖论,碰撞的可能性可能比你想象的要高。
如果您的ID很短(<1024位),您可以对它们进行RSA加密,这样可以满足您的需求。你只需要忘记私钥。