【问题标题】:Algorithm to hash a string to a dynamic number of characters将字符串散列为动态字符数的算法
【发布时间】:2019-03-12 09:05:51
【问题描述】:

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

【问题讨论】:

  • 你需要这种东西有什么目的?
  • 我想创建一个标识符,它依赖于未指定数量的输入,但输出长度必须始终相同。我无法按原样组合输入,因为我需要一种方法来检查标识符中是否仍有部分原始哈希。假设标识符是 ABCDEF,其中 A、B、C、D、E 和 F 是动态长度的哈希值。我需要能够重新计算 A、B、C 等)。希望有帮助!
  • 那么,hashA + hashB + hashC + ... 必须始终等于给定长度,所以您想让每个散列的长度动态以始终达到总长度? ......我首先会进一步回过头来询问您究竟需要 那个 做什么。确保您没有XY Problem
  • 这个要求可以满足我的需要。

标签: algorithm dynamic hash encoding variable-length


【解决方案1】:

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

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

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

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

有关 Java 实现,请参阅支持两种算法 https://www.bouncycastle.org/specifications.htmlBouncy Castle Crypto Library

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

【讨论】:

  • 谢谢@hans,这看起来很有希望!
猜你喜欢
  • 2014-03-25
  • 2015-05-02
  • 2013-04-21
  • 1970-01-01
  • 2020-07-14
  • 1970-01-01
  • 2013-08-30
  • 2011-09-30
  • 2012-04-06
相关资源
最近更新 更多