作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在寻找一种将字符串散列为动态字符数的方法。我不想修剪现有的散列(例如 SHA),而是生成一个散列,您可以为其指定输出字符数。如果输入少于字符数,它也应该工作。它不需要是加密的,它只需要保证相同输入的相同散列。我一直在 wiki 上浏览哈希函数,但它们似乎都具有固定长度或动态长度,具体取决于输入。
最佳答案
您要找的可能是Extendable Output Functions (XOF's) !
这些散列函数没有预定义的输出长度,可能会使用 sponge functions用于 build 。
SHA-3 系列由四个加密哈希函数 [...] 和两个可扩展输出函数 (XOF) 组成,称为 SHAKE128 和 SHAKE256 .
您可以在 https://emn178.github.io/online-tools/ 下尝试两者.对于输出位,选择您想要的数字或字符。
对于 Java 实现,请参阅 Bouncy Castle Crypto Library支持两种算法 https://www.bouncycastle.org/specifications.html
但要注意collisions如果哈希长度太小。
关于将字符串散列为动态字符数的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55117636/
我是一名优秀的程序员,十分优秀!