天天看點

《Python密碼學程式設計》——1.11 雙重強度加密

本節書摘來自異步社群《python密碼學程式設計》一書中的第1章,第1.11節,作者 [美] al sweigart(斯維加特),李永倫 譯,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

你可能在想,使用兩個不同密鑰加密同一條消息兩次會加倍加密的強度。但這對于凱撒加密法(以及大多數其他加密法)來說不是那麼一回事。讓我們雙重加密一條消息看個究竟。

如果我們用密鑰3加密“kitten”這個詞,得到的密文将是“nlwwhq”。如果我們用密鑰4加密“nlwwhq”這個詞,得到的密文将是“rpaalu”。這和用密鑰7加密“kitten”這個詞完全一樣。“雙重”加密和普通加密是一樣的,沒有任何強化。

其中的原因是,當我們用密鑰3加密時,我們把3加到明文字母的數字。接着,當我們用密鑰4加密時,我們把4加到明文字母的數字。但加上3再加上4和直接加上7完全一樣。用密鑰3和4加密兩次和用密鑰7加密一次是一樣的。

對于大多數加密法而言,多次加密不會增加密文的強度。事實上,如果你用兩個加起來等于26的密鑰來加密某些明文,你最終得到的密文和原來的明文是一樣的!