Ale*_*ysh 5 markov-chains sha bignum
我有一个大的"唯一"整数(实际上是一个SHA1哈希).
注意:虽然我在这里谈论SHA1哈希,但这不是加密/安全问题!我不打算打破SHA1.想象一个随机的160位整数而不是SHA1,如果这将有所帮助.
我想(除了有趣之外)找到一种算法将SHA1哈希映射到计算机生成的(伪)英语短语.映射应该是双向的(即,知道算法,必须能够从该短语计算原始SHA1散列.)
这句话没有意义.我甚至会满足于整段废话.(虽然一个段落的质量 - 英语 - 应该比单纯的短语更好.)
更好的算法会产生更短,更自然,更独特的短语.
一个变化:如果我只能使用一部分哈希值,那就没关系了.比如,前六个十六进制数字是好的.
生成的短语的可能用法:Git提交ID的人类可读版本,用作给定程序版本的座右铭,该版本是根据该提交构建的.(正如我所说,这是"为了好玩".我并不认为这是非常实用的 - 或者比SHA1本身更具可读性.)
可能的方法:在过去,我试图建立一个概率表(单词),并根据我从SHA读取的位,生成短语作为马尔可夫链,播种生成器(从概率树中挑选分支).这不是很成功,由此产生的短语太长而且难看.我不确定这是一个错误,还是算法中的一般缺陷,因为我不得不尽早放弃它.
现在我正在考虑再次尝试解决问题.关于如何处理这个问题的任何建议?你认为马尔可夫连锁方法能在这里发挥作用吗?别的什么?
一个非常简单的方法是:列出 1024 个名词、1024 个动词和 1024 个形容词的列表。你的短语可以是以下形式的句子
noun[bits_01-10] verb[bits11-20] adjective[bits21-30] verb[bits31-40],
noun[bits_41-50] verb[bits51-60] adjective[bits61-70] verb[bits71-80],
noun[bits_81-90] verb[bits91-100] adjective[bits101-110] verb[bits111-120] and
noun[bits_121-130] verb[bits131-140] adjective[bits141-150] verb[bits151-160].
Run Code Online (Sandbox Code Playgroud)
通过更多的语言学思考,您可能可以构建稍微复杂一点的广告,从而不那么重复的句子(例如,单数/复数一点,不同时态的两个,......)。较长的单词列表会占用更多的位,但我的猜测是您会很快到达相当奇特的单词。
| 归档时间: |
|
| 查看次数: |
416 次 |
| 最近记录: |