对于密钥的一个想法

    最近在看北航大公开课《密码的奥秘》,第二集中讲到“一次性密码”最安全。以前还看到过一篇文章,说密钥长度和密文长度一样,那么密钥就不会被重复使用,最安全。

    我想:根号2是一个“无限不循环”数字。因为“无限”的原因,可以事先约定截取根号2的某一段数字作为密钥,就可以获得“一次性密码”了。因为“不循环”,可以取得足够长的密钥而不用担心密钥的重复性了。

    比如可以考虑这样做:比如今天是今年的第222天,那么根号2的小数点后第2220001位开始的数字作为密钥的开始,密钥长度视密文的长度来确定。这样就保证了每天发电报的时候,所使用的密钥跟昨天的不一样,密钥有了足够的长度也使得密文的每一个子被不同的代码加密。

    不知道我的想法有没有用。

 


    在网上找到一个根号5的10万位有效数字,我发现0-9出现的频次分别是:0(9941次)1(10061次)2(9889次)3(10049次)4(10054次)5(9884次)6(10089次)7(9998次)8(10047次)9(9988次),各个数字出现的频次几乎一样,所以很难用频次分析法来找到密钥。


    2017.11.14 最近在知乎上看到《用无理数加密,如何破解?》https://www.zhihu.com/question/35106877,发现我的想法是可行的。

    当然,不是简单的直接用无理数进行加密,而是把无理数当成一个事先约定的密钥,算法还是需要另外设计的。算法可以公开,但是因为密钥的复杂且足够长,可以使得算法容易建立,至少在混淆这方面不用太复杂了。