【发布时间】:2019-09-21 07:05:40
【问题描述】:
我需要什么
我需要一种产生双射输出的算法。我有一个 31 位输入,需要一个伪随机 31 位输出。
我的考虑
CRC 在其位宽内是双射的。
我在 Google 上查看过,可以找到这方面的多项式,但找不到表格或算法。
谁能指出我正确的方向?
我需要一个使用多项式 0x737e312b 的 CRC-31 算法,或者任何能满足我需要的双射函数。
注意
我找到了以下代码,但很遗憾我没有编译和运行它的工具。
【问题讨论】:
-
所以你想对输入进行随机排列?
-
您可以使用任何双射函数。您是在问存在哪些双射函数,或者哪个更好,或者如何实现一个,还是什么?
-
您可以将输入与任意 31 位随机数进行异或。
-
或者,你可以乘以一个(奇数)素数 mod 2**31
-
好吧,试试吧! (只需 15 分钟左右)
标签: algorithm hash crc perfect-hash bijection