我正在考虑散列敏感 ID 数据的小块,但一旦被混淆,我需要保持数据块的完整唯一性。
所以,我想出了加密一些公开的输入数据(比如 128 位零)的想法,并使用我想要混淆的数据作为密钥/密码,然后将其丢弃,从而保护原始数据免受永远被发现。
我已经了解散列算法,但我的问题是我需要保持完全的唯一性(一般来说是输入到输出的1:1 映射),同时仍然无法检索实际输入。散列无法提供此功能,因为在此过程中会丢失信息。
数据一旦“加密”就没有必要被检索。从那时起,它只能用作 ID 号。
实际的 GUID/UUID 在这里不合适,因为我需要手动控制每个标识符的标识符。ID 不能是未知的或任意生成的数据。
编辑:为了明确这些标识符是由什么组成的:
- (未加密) 64 位时间戳
- ID 生成计数器(每个文件类型一个计数)
- 随机数据(使多个加密密钥不同)
- MAC 地址(或者如果不可用,设置最高位 + 随机数字)
- 其他 PC 特定信息(来自注册表)
整个内容加起来应该是 192 位,但加密部分的内容大小可能会有所不同(这绝不是最终规范)。
鉴于:
- 静态 IV 值
- 任意 128 位密钥
- 静态 128 位输入
在给定相同的输入和 IV 值的情况下,AES 密钥的处理方式是否会导致1:1 key<---->output
映射?