我需要一种算法,该算法可以将32位带符号整数一对一映射(即无冲突)。
我真正关心的是足够的熵,因此函数的输出似乎是随机的。基本上,我正在寻找一种与XOR密码类似的密码,但是它可以生成看起来更加随意的输出。安全不是我真正关心的问题,尽管默默无闻。
出于澄清目的进行编辑:
预期结果示例:
F(100)= 98456 F(101)= -758 F(102)= 10875498 F(103)= 986541 F(104)= 945451245 F(105)= -488554
就像MD5一样,改变一件事情可能会改变很多事情。
我正在寻找数学函数,因此手动映射整数对我来说不是解决方案。对于那些询问的人,算法速度不是很重要。
使用任何32位块密码!根据定义,分组密码以可逆的方式将其范围内的每个可能的输入值映射到唯一的输出值,并且根据设计,很难确定没有密钥的任何给定值将映射到什么。只需选择一个密钥,如果安全性或晦涩性很重要,就将其保密,然后使用密码作为转换即可。
有关将此概念扩展到非2的幂的范围的信息,请参阅我的关于使用分组密码进行安全置换的文章。
解决您的特定问题: