从64位整数到64位整数的可逆“哈希”函数

我需要的是一个 函数,该函数将一个 整数(64位整数)转换为另一个

整数,这种方式对用户来说似乎是“随机的”(但实际上是确定性的),以便将3个后续数字转换为3个数字彼此完全不同。

做到这一点很容易而又不可逆,但是在这部分上却很难。

基本上,这是与可逆哈希函数相同的问题吗?,但我需要超过2 ^ 32个不同的值。

有任何想法吗?

PS:我要用Java编写它,但是问题本身是很普通的。

回答:

这些是块密码的基本要求,通常使用Feistel结构实现:https

:

//en.wikipedia.org/wiki/Feistel_cipher

  1. 创建低32位的哈希并将其与高32位进行异或
  2. 交换低32位和高32位
  3. 重复几次。

以上是 从64位整数到64位整数的可逆“哈希”函数 的全部内容, 来源链接: utcz.com/qa/416669.html

回到顶部