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