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

Algorithm to hash a string to a dynamic number of characters

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

您要找的可能是 Extendable Output Functions (XOF's)!

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

SHA-3 系列由四个加密哈希函数 [...] 和两个可扩展输出函数 (XOF) 组成,称为 SHAKE128 and SHAKE256

您可以在 https://emn178.github.io/online-tools/ 下尝试两者。对于输出位,选择您想要的数字或字符。

对于 Java 实现,请参阅 Bouncy Castle Crypto Library which supports both algorithms https://www.bouncycastle.org/specifications.html

但如果哈希长度太小,请注意 collisions