AES加密和混淆ID

时间:2012-07-16 00:31:04

标签: encryption cryptography aes uniqueidentifier

我正在考虑散列敏感ID数据的小块,但是我需要在整理数据块时保持整个的完全唯一性。

所以,我提出了加密一些公知的输入数据(比如128位零)的想法, 使用我想要混淆的数据作为密钥/密码,然后抛出它远离 ,从而保护原始数据不被发现。

我已经了解哈希算法,但我的问题是我需要 保持完全唯一性 (一般来说是 1:1映射输入到输出)仍然 使得无法检索实际输入。 哈希不能提供此功能,因为信息在此过程中丢失。

没有必要在“加密”后检索数据。从那时起它只能用作身份证号码。

实际的GUID / UUID在这里不合适,因为我需要在每个标识符的基础上手动控制标识符。 ID不能是未知的或任意生成的数据。


编辑:准确说明 这些标识符的构成:

  • (未加密) 64位时间戳
  • ID生成计数器(每种文件类型一个计数)
  • 随机数据(使多个加密密钥不同)
  • MAC地址(如果没有,请设置最高位+随机数字)
  • 其他PC特定信息(来自注册表)

整个事情应该总计192位,但加密部分的内容大小可能会有所不同(这绝不是最终规范)。


假设:

  • 静态IV值
  • 任意128位密钥
  • 静态128位输入

AES键是否会以导致1:1 key<---->output映射的方式处理,是否给定相同的输入和IV值?

1 个答案:

答案 0 :(得分:3)

没有。摘要中,AES是一系列排列,您可以使用密钥选择随机排列。对于其中一种排列(即,在给定的AES密钥下进行加密),您将不会发生冲突,因为排列是双射的。

然而,对于两种不同的排列(即在不同的AES密钥下加密,这就是你所拥有的),我们无法保证你不会发生碰撞。事实上,由于生日悖论,碰撞的可能性可能比你想象的要高。

如果您的ID很短(<1024位),您可以对它们进行RSA加密,这样可以满足您的需求。你只需要忘记私钥。