一次一密加密法,是不可破譯的,他僅是在維吉尼亞加密法上增加以下條件:
- 密鑰要和加密的消息同樣長
- 密鑰由真正的隨機符號組成
- 密鑰只能使用一次,永遠不對其它消息重復使用
接下來我們說明幾點
- 為什么他是不可破譯的
- 為什么僅在維吉尼亞加密法上增加而不需要我們重新寫一個代碼
- 為什么密鑰只能用一次
- 真正隨即符號是個什么?
OTP牢不可破
這么說吧,我們先來想想為什么維吉尼亞加密法是可以破譯的---因為密碼分析
但是我們使用和加密的消息一樣長的密鑰會發生什么?
每個明文字符可以被等概率地加密成任何一個密文字符。反過來說,每個密文字符都可以被等概率地解密成相同的明文字符
這意味着什么?這里發生了恐怖的事情,如果現在有一個密文字符'A', 它完全有這個可能被解密成'C', 也完全有可能被解密成'M',
甚至有可能被解密成英文字母中的任何一個,那么它的明文是到底是什么?,我們不得而知,只猜一個,猜中概率多大?
是的,1/26
當然我們不會傻到只用一個明文字符來做加密,密文消息可能是成百上千,那猜中密文的概率多大?
是的,1/(26^消息的長度)
如果使用長為55個字符的密鑰加密長度為55個字符的明文消息,可能的密鑰有多少個?
2655, or 666,091,878,431,395,624,153,823,182, 526,730,590,376,250,379,528,249,805,353,030,484,209,594,192,101,376
如果還是沒有明白多么神奇,我們舉個栗子:
明文消息: IF YOU WANT TO SURVIVE OUT HERE, YOU’VE GOT TO KNOW WHERE YOUR TOWEL IS
使用密鑰:KCQYZHEPXAUTIQEKXEJMORETZHZTRWWQDYLBTTVEJMEDBSANYBPXQIK
得到結果:SHOMTDECQTILCHZSSIXGHYIKDFNNMACEWRZLGHRAQQVHZGUERPLBBQC

假設有人拿到了這個密文(SHOMT...) 它如何解密?暴力破譯嗎?不行 可能的密鑰太多了:2655
有一個固執的老哥有個很厲害的機器做計算,真這么做了,得到了一個字符串通過了英文檢測isEnglish(),成功了嗎? 不一定
這是因為對於任何密文而言,所有可能的明文消息都有着相同的概率。
不信的話你看

我們可以說明文(THEMY...)使用密鑰(KCQYZ...)得到了這個密文(SHOMT...)!!!!!!!!!!!!!
就一次一密而言,老哥沒法判斷那個才是明文
事實上,任何55個字母長的可讀英語明文消息都有可能是原來的明文,
不能因為某個密鑰把密文解密成了可讀英文就說他是原來的加密密鑰。
小心偽隨機

如果一次一密密鑰不是真正的隨機數,那就沒有密碼學上的完美性保密性了。
密鑰只能用一次
小心二次密碼本加密法
如果使用相同的密鑰加密不同得消息,那就是使用了二次密碼本。
這是危險的行為,如果用相同的密鑰加密了兩條不同消息,黑客如果獲得了密文(敵人知道系統---香農格言,其中包括密文)
使用他的某個破譯密鑰成功破譯了一條,另一條亂碼,那就不是原來的加密密鑰,加密仍然是完美的。(完美----牢不可破)
實際上黑客很有可能把他們同時破譯了
在維吉尼亞加密法增加代碼
其實仔細想想:二次密碼本加密法就是維吉尼亞加密法他們有着相同的特征,這意味使用相同的技術可以破譯他們。
一次一密轉化為如何滿足上面三個條件。
