我有一个大而“唯一”的整数(实际上是一个 SHA1 哈希)。
注意:虽然我在这里谈论的是 SHA1 哈希,但这不是密码学/安全问题!我不是要破坏 SHA1。如果有帮助的话,想象一个随机的 160 位整数而不是 SHA1。
我想(除了玩得开心)找到一种算法,将 SHA1 哈希映射到计算机生成的(伪)英文短语。映射应该是双向的(即,知道算法,必须能够从该短语计算原始 SHA1 哈希。)
这句话不必说得通。我什至会接受一整段废话。(虽然一个段落的质量——英语性——可能应该比一个短语更好。)
更好的算法会产生更短、更自然、更独特的短语。
一个变体:如果我只能使用哈希的一部分,那也没关系。说,前六个十六进制数字很好。
生成的短语的可能用法:Git 提交 ID 的人类可读版本,用作给定程序版本的座右铭,该程序版本是从该提交构建的。(正如我所说,这是“为了好玩”。我并不是说这非常实用——或者比 SHA1 本身更具可读性。)
可能的方法:在过去,我尝试建立一个概率表(单词),并根据我从 SHA 读取的位,将短语生成为马尔可夫链,为生成器播种(从概率树中挑选分支)。这不是很成功,产生的短语太长而且丑陋。我不确定这是一个错误,还是算法中的一般缺陷,因为我必须尽早放弃它。
现在我正在考虑再次尝试解决这个问题。关于如何解决这个问题的任何建议?你认为马尔可夫链方法可以在这里工作吗?还有什么?