从64位整数到64位整数的可逆“哈希”函数
我需要的是一个 函数,该函数将一个 长 整数(64位整数)转换为另一个 长
整数,这种方式对用户来说似乎是“随机的”(但实际上是确定性的),以便将3个后续数字转换为3个数字彼此完全不同。
做到这一点很容易而又不可逆,但是在这部分上却很难。
基本上,这是与可逆哈希函数相同的问题吗?,但我需要超过2 ^ 32个不同的值。
有任何想法吗?
PS:我要用Java编写它,但是问题本身是很普通的。
回答:
这些是块密码的基本要求,通常使用Feistel结构实现:https
:
//en.wikipedia.org/wiki/Feistel_cipher
- 创建低32位的哈希并将其与高32位进行异或
- 交换低32位和高32位
- 重复几次。
以上是 从64位整数到64位整数的可逆“哈希”函数 的全部内容, 来源链接: utcz.com/qa/416669.html