日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

Python工具箱系列(十一)

發(fā)布時間:2024/8/1 python 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python工具箱系列(十一) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

上文講的古典加密算法雖然很簡單,但是在密碼史上是使用最久的加密方式。歷史上由于算力有限,加上有學(xué)識的人有限,所以直到概率論出現(xiàn)后,古典密碼才開始破防。歸根結(jié)底,英文單詞中字母出現(xiàn)的頻率是不同的,e以12.702%的百分比占比最高,z只占到0.074%,感興趣的同學(xué)可以去百科查字母頻率詳細統(tǒng)計數(shù)據(jù)。如果密文數(shù)量足夠大,僅僅采用頻度分析法就可以破解。如果再加上現(xiàn)代計算機強大的算力,凱撒加密算法更是不堪一擊。

后續(xù)人類不斷改進,在二戰(zhàn)時期涌現(xiàn)了新的思路與算法。恩尼格瑪機就是二戰(zhàn)時期納粹德國使用的加密機器,非常經(jīng)典,并且難以破譯。英國集全國之力進行破譯,參與破譯的人員有被稱為計算機科學(xué)之父、人工智能之父的圖靈。恩尼格瑪機使用的加密方式本質(zhì)上還是移位和替代,只不過因為密碼表種類極多,破解難度高,同時加密解密機器化,使用便捷。恩尼格瑪機共有26個字母鍵和26個帶有字母的小燈泡,當(dāng)按下鍵盤上的鍵時,加密后的密文字母所對應(yīng)的小燈泡就會亮起來,依次記錄密文發(fā)送給接收者就實現(xiàn)了密文傳輸。接收者也用相同的恩尼格瑪機,依次輸入密文并獲取原文。密碼機內(nèi)裝有“轉(zhuǎn)子”裝置,每按下鍵盤上的一個字母,“轉(zhuǎn)子”就會自動地轉(zhuǎn)動一個位置,相當(dāng)于更換了一套密碼表。最開始“轉(zhuǎn)子”只有6格,相當(dāng)于有6套密碼表,后來升級到了26格,即有26套密碼表。后來恩尼格瑪機由一個“轉(zhuǎn)子”升級到了多個“轉(zhuǎn)子”,是密碼表套數(shù)成指數(shù)級增長。最高水準(zhǔn)恩尼格瑪機具有8個“轉(zhuǎn)子”,密碼表套數(shù)為26的8次方,達到了2000多億種。此時靠人工進行破譯就不太可能了,國內(nèi)某抗日神劇中一個數(shù)學(xué)美女天才,靠幾張紙就破譯了真的只能是呵呵了。電影《模仿游戲》較為真實得復(fù)現(xiàn)了破解方法,就是采用了類似現(xiàn)代計算機的機械機器進行快速運算。

現(xiàn)代經(jīng)典密碼學(xué)針對加解密問題,發(fā)展出幾個大的方向:

  • 對稱加密

  • 非對稱加密

  • 散列

本文將簡單介紹對稱加密的python實現(xiàn)。先談主要的對稱加密算法,主要有以下幾類:

  • DES(數(shù)據(jù)加密標(biāo)準(zhǔn),Data Encryption Standard)。DES 應(yīng)該是最早的現(xiàn)代密碼學(xué)算法之一。它由美國政府提出,密鑰長度為56位。目前,它暴力破解56位密碼的時間,已經(jīng)能控制在24小時內(nèi)了。DES實際上是一個過時的密碼學(xué)算法,目前已經(jīng)不推薦使用了。關(guān)于DES,還有一點特別有意思。DES 包含一個關(guān)鍵模塊:S盒,其設(shè)計的原理一直沒有公開。因此,很多人都相信,這個S盒中存在后門,只要美國政府需要,就能夠解密任何DES密文。

  • IDEA(國際數(shù)據(jù)加密算法,International Data Encryption Algorithm)。IDEA 由瑞士研究人員設(shè)計,密鑰長度為128位。對比于其他的密碼學(xué)算法,IDEA的優(yōu)勢在于沒有專利的限制。相比于DES和AES的使用受到美國政府的控制,IDEA的設(shè)計人員并沒有對其設(shè)置太多的限制,這讓 IDEA在全世界范圍內(nèi)得到了廣泛的使用和研究。

  • AES(高級加密標(biāo)準(zhǔn),Advanced Encryption Standard)。在DES被破解后,美國政府推出了AES算法,提供了128位、192位和256位三種密鑰長度。通常情況下,我們會使用128位的密鑰,來獲得足夠的加密強度,同時保證性能不受影響。目前,AES是國際上最認(rèn)可的密碼學(xué)算法。在算力沒有突破性進展的前提下,AES在可預(yù)期的未來都是安全的。

  • 國密標(biāo)準(zhǔn)或者自研加密算法。

對稱密鑰能夠廣泛用于:

  • 數(shù)據(jù)文件與數(shù)據(jù)庫內(nèi)容的加密。

  • 網(wǎng)絡(luò)傳輸?shù)男畔⒓用堋?/p>

  • 硬件/內(nèi)核/驅(qū)動級加密,例如基于文件系統(tǒng)的加密等。

# pip install cryptographyfrom cryptography.fernet import Fernet# 生成對稱密鑰 key = Fernet.generate_key() print(key)# 用密鑰加密 coder = Fernet(key) crymsg = coder.encrypt(b'what are you doing?') print(crymsg)# 用密鑰解密 plaintext = coder.decrypt(crymsg) print(plaintext)

代碼運行后,能夠看到加密后的密文比原文要長。實際運行時,密鑰一定要保存好,丟失了密文就基本解不出來了。當(dāng)然暴力破解還是可以的,只不過代價巨大。

總結(jié)

以上是生活随笔為你收集整理的Python工具箱系列(十一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。