我有一个奇怪的想法,我想尝试一下,它可能是坏的,它可能以前做过,但我做它只是为了好玩。这个问题的简短版本是:有没有可能从一个小种子中生成一个长的、确定性的、非均匀分布的数字串/序列?在
Long(er)版本:我正在考虑通过更改编码来加密文本。新的编码将通过哈夫曼算法生成。哈夫曼算法需要相当长的非均匀分布文本。然后字符可以有不同的位长度,这将是这种加密的主要优势。问题是每次你想解密一个长文本时输入/记住一个长文本是不切实际的。所以我想知道是否可以从密码种子生成文本?在
文本是什么并不重要,只要它的字符分布不均匀,并且每次给它相同的种子都可以重新创建完全相同的序列。最好,Python中有没有函数/扩展可以做到这一点?在
编辑: 要扩展变位长度的“强度”: 如果我有一个字符串“test”,ASCII值116,101,115,116,它给出位值 1110100 1100101 1110011 1110100
然后,假设我的哈夫曼算法生成 t=101 e=1100111 s=10001
最后一个字符串是 如果我们把它编码回ASCII,我们得到101110011110001101000,这是3个完全不同的字符,它的“\xh”。显然,在这上面进行任何频率分析或类似的分析是不可能的。在
基于DhruvPathak的直接回答,创建一个简单的随机字符串,我有两个补充:①不均匀分布和②随机翻译,以防止预测字母的频率:
非均匀分布是通过使用
randint(randint(…))
来实现的,它基本上倾向于以较低的数字作为输出。在在第一次尝试中,我得到了这个
^{pr2}$translation
列表:结果
^{3}$random_string
(由f = [ 0 ] * 25
,for c in random_string: f[ord(c) - ord('a')] += 1
,zip(*reversed(sorted(zip(f, range(26)))))[1]
)中的字符计数给出了这个列表:因此,结果与预期相当吻合。在
这是一个基于
random
模块的解决方案,如果给定相同的种子,它将生成相同的序列。在相关问题 更多 >
编程相关推荐