将字符串散列为动态字符数的算法

时间:2019-03-12 09:05:51

标签: algorithm dynamic hash encoding variable-length

我正在寻找一种将字符串散列为动态字符数的方法。我不想修剪现有的哈希(例如SHA),但会生成一个哈希,您可以为其指定输出字符的数量。如果输入少于字符数,它也应该起作用。它不需要加密,只需要保证相同输入的相同哈希值即可。我一直在浏览Wiki上的哈希函数,但是根据输入的不同,它们似乎都有固定的动态长度。

1 个答案:

答案 0 :(得分:0)

您正在寻找的是Extendable Output Functions (XOF's)

这些哈希函数没有预定义的输出长度,可能使用sponge functions进行构造。

SHA-3系列由四个加密散列函数和两个可扩展输出函数(XOF)组成,分别称为 SHAKE128 {{ 3}}

您可以在SHAKE256下进行尝试。对于输出位,选择所需的数字或字符。

有关Java实现,请参见同时支持两种算法https://emn178.github.io/online-tools/Bouncy Castle Crypto Library

但是请注意https://www.bouncycastle.org/specifications.html,如果哈希长度太小。