【发布时间】:2019-03-03 21:36:28
【问题描述】:
我想要一个数学函数 y = f(x),其中 x 和 y 是 32 位整数,这样
- 通过某些函数 x = g(y) 是可逆的
- 序列 f(1), f(2), f(3), ... 看起来是随机的
我曾想过用一些恒定键进行异或运算,但这看起来并不随机。我也可以使用 DES 或 AES。但这些似乎有点矫枉过正。
还有更简单的吗?
【问题讨论】:
-
一些术语是有序的:一个真正可逆的函数 f: A -> A 被称为 A 上的 排列。所以你想要一个看起来“随机”的空间排列32 位整数。有无数种方法可以构建这样的东西,所以你需要更加具体。您可以使用 AES 或 DES 或 Blowfish 作为示例,并将所有内容缩小为 4(对于 AES)或 2(对于 blowfish 和 DES),并且仅使用几轮作为示例。
-
我闻到了 XY 问题...
-
尝试分组密码,例如 Skip32。但请注意,这总是将一个值加密为另一个值,因此您需要记住,输入的重复会导致输出的重复,可能会将信息泄露给对手。
-
定义“看起来随机”
-
@JohnColeman 这个想法是很难预测给定 f(1) ... f(n-1) 的值 f(n) 见en.wikipedia.org/wiki/Pseudorandomness
标签: math encryption integer