Python工具箱系列(十一)
上文講的古典加密算法雖然很簡單,但是在密碼史上是使用最久的加密方式。歷史上由于算力有限,加上有學識的人有限,所以直到概率論出現后,古典密碼才開始破防。歸根結底,英文單詞中字母出現的頻率是不同的,e以12.702%的百分比占比最高,z只占到0.074%,感興趣的同學可以去百科查字母頻率詳細統計數據。如果密文數量足夠大,僅僅采用頻度分析法就可以破解。如果再加上現代計算機強大的算力,凱撒加密算法更是不堪一擊。
后續人類不斷改進,在二戰時期涌現了新的思路與算法。恩尼格瑪機就是二戰時期納粹德國使用的加密機器,非常經典,并且難以破譯。英國集全國之力進行破譯,參與破譯的人員有被稱為計算機科學之父、人工智能之父的圖靈。恩尼格瑪機使用的加密方式本質上還是移位和替代,只不過因為密碼表種類極多,破解難度高,同時加密解密機器化,使用便捷。恩尼格瑪機共有26個字母鍵和26個帶有字母的小燈泡,當按下鍵盤上的鍵時,加密后的密文字母所對應的小燈泡就會亮起來,依次記錄密文發送給接收者就實現了密文傳輸。接收者也用相同的恩尼格瑪機,依次輸入密文并獲取原文。密碼機內裝有“轉子”裝置,每按下鍵盤上的一個字母,“轉子”就會自動地轉動一個位置,相當于更換了一套密碼表。最開始“轉子”只有6格,相當于有6套密碼表,后來升級到了26格,即有26套密碼表。后來恩尼格瑪機由一個“轉子”升級到了多個“轉子”,是密碼表套數成指數級增長。最高水準恩尼格瑪機具有8個“轉子”,密碼表套數為26的8次方,達到了2000多億種。此時靠人工進行破譯就不太可能了,國內某抗日神劇中一個數學美女天才,靠幾張紙就破譯了真的只能是呵呵了。電影《模仿游戲》較為真實得復現了破解方法,就是采用了類似現代計算機的機械機器進行快速運算。
現代經典密碼學針對加解密問題,發展出幾個大的方向:
-
對稱加密
-
非對稱加密
-
散列
本文將簡單介紹對稱加密的python實現。先談主要的對稱加密算法,主要有以下幾類:
-
DES(數據加密標準,Data Encryption Standard)。DES 應該是最早的現代密碼學算法之一。它由美國政府提出,密鑰長度為56位。目前,它暴力破解56位密碼的時間,已經能控制在24小時內了。DES實際上是一個過時的密碼學算法,目前已經不推薦使用了。關于DES,還有一點特別有意思。DES 包含一個關鍵模塊:S盒,其設計的原理一直沒有公開。因此,很多人都相信,這個S盒中存在后門,只要美國政府需要,就能夠解密任何DES密文。
-
IDEA(國際數據加密算法,International Data Encryption Algorithm)。IDEA 由瑞士研究人員設計,密鑰長度為128位。對比于其他的密碼學算法,IDEA的優勢在于沒有專利的限制。相比于DES和AES的使用受到美國政府的控制,IDEA的設計人員并沒有對其設置太多的限制,這讓 IDEA在全世界范圍內得到了廣泛的使用和研究。
-
AES(高級加密標準,Advanced Encryption Standard)。在DES被破解后,美國政府推出了AES算法,提供了128位、192位和256位三種密鑰長度。通常情況下,我們會使用128位的密鑰,來獲得足夠的加密強度,同時保證性能不受影響。目前,AES是國際上最認可的密碼學算法。在算力沒有突破性進展的前提下,AES在可預期的未來都是安全的。
-
國密標準或者自研加密算法。
對稱密鑰能夠廣泛用于:
-
數據文件與數據庫內容的加密。
-
網絡傳輸的信息加密。
-
硬件/內核/驅動級加密,例如基于文件系統的加密等。
代碼運行后,能夠看到加密后的密文比原文要長。實際運行時,密鑰一定要保存好,丟失了密文就基本解不出來了。當然暴力破解還是可以的,只不過代價巨大。
總結
以上是生活随笔為你收集整理的Python工具箱系列(十一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网易云创建添加推荐歌谱和删除操作
- 下一篇: 10种软件滤波方法的示例程序(匠人转载学