![]() |
1
8
你所描述的问题。看到了吗 wikipedia's article 任何你使用的哈希函数都很好;散列函数往往根据以下标准进行判断:
从表面上看,把整数变成字符串几乎像是另一层加密(我想这对你来说是好事) 但是,您的问题需要处理 特别是数字 ,我们开始吧。 处理整数的哈希函数如果你想借用已有的算法,你可能想涉猎一下 pseudo-random number generators 一个简单的方法是中间平方法:
伊恩,
因此,1111将被“散列”为2342,在中间平方法中。 有效,但对于少数散列,这具有非常低的碰撞率、均匀分布和巨大的混沌潜力(小的变化=>巨大的变化)。但如果你有很多价值观,是时候去寻找别的东西了。。。 http://en.wikipedia.org/wiki/Mersenne_twister] . 事实上,每一种编程语言都可能有一个实现。你的散列“输入”在他们的术语中被称为“种子”。 总之
|
![]() |
2
4
哈希非常符合您的要求。如果你真的不想使用字符串,找一个可以接受数字或二进制数据的哈希库。但是在我看来使用字符串是可以的。 |
![]() |
3
3
Bob Jenkins' mix function 是一个经典的选择,当n=3时。 |
![]() |
4
1
正如其他人所指出的,散列函数正是您想要的。散列接受字节(而不是字符串)并返回字节,当然,整数和字节之间的转换很简单。下面是一个python函数示例,该函数处理32位整数,并输出一个32位整数:
当然,它可以很容易地适应不同长度的输入和输出。 |
![]() |
5
0
|
![]() |
6
0
一个x位的分组密码将把一个数字有效地转换成另一个数字。您可以组合(sum/mult?)输入的数字并对它们进行加密,或者对每个数字进行迭代加密—类似于CBC或链式模式。谷歌'格式保留百科全书'。可以创建一个32位的分组密码(不能广泛使用)并使用它来创建一个“散列”输出。散列和加密的主要区别在于散列是不可逆的。 |