python密碼學一次性密碼的實現(xiàn)
一次性密碼密碼
一次性密碼密碼是一種Vignere密碼,包括以下功能;
- 這是一個牢不可破的密碼.
- 密鑰與加密郵件的長度完全相同.
- 密鑰由隨機符號組成.
- 顧名思義,密鑰僅使用一次,并且從不再用于任何其他消息加密.
由于這個原因,加密郵件很容易受到密碼分析者的攻擊.用于一次性密碼密碼的密鑰稱為 pad ,因為它打印在紙墊上.
為什么它是堅不可摧的?
由于以下功能,密鑰是牢不可破的;
- 密鑰只要是給定的消息.
- 密鑰是真正隨機的,特別是自動生成的.
- 按模10/26/2計算的密鑰和純文本.
- 每個密鑰應使用一次,并由發(fā)送方和接收方銷毀.
- 應該有兩個密鑰副本:一個帶發(fā)件人,另一個帶接收者.
加密
要加密字母,用戶需要在明文下面寫一個密鑰.明文字母位于頂部,密鑰字母位于左側(cè).兩個字母之間的橫截面是純文本.它在下面的示例中描述 :
解密
要解密一封信,用戶會取左邊的關(guān)鍵字母,并在該行中找到密文字母.純文本字母位于列的頂部,用戶可以在其中找到密文字母.
一次性密碼密碼的實現(xiàn)
Python包含一個用于 one-time-pad 密碼實現(xiàn)的hacky實現(xiàn)模塊.包名稱稱為One-Time-Pad,其中包括一個命令行加密工具,該工具使用類似于一次性密碼密碼算法的加密機制.
安裝
您可以使用以下命令安裝此模塊 :
pip install onetimepad
如果您希望從命令行使用它,請運行以下命令 :
onetimepad
代碼
以下代碼有助于生成一次性密碼密碼;
import?onetimepad cipher?=?onetimepad.encrypt('One?Time?Cipher',?'random') print("Cipher?text?is?") print(cipher) print("Plain?text?is?") msg?=?onetimepad.decrypt(cipher,?'random') print(msg)
輸出
運行上面和下面給出的代碼時,您可以觀察到以下輸出;
注意 : 如果密鑰的長度小于消息的長度(純文本),則加密的消息很容易破解.
在任何情況下,密鑰不一定是隨機的,這使得一次性密碼密碼作為一種有價值的工具.
以上就是python密碼學一次性密碼的實現(xiàn)的詳細內(nèi)容,更多關(guān)于python一次性密碼的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python網(wǎng)絡爬蟲之獲取網(wǎng)絡數(shù)據(jù)
本文介紹了Python中用于獲取網(wǎng)絡數(shù)據(jù)的重要工具之一——Requests庫,詳細講解了Requests庫的基本使用方法、請求方法、請求頭、請求參數(shù)、Cookies、Session等內(nèi)容,并結(jié)合實例代碼展示了Requests庫的應用場景2023-04-04pymysql 插入數(shù)據(jù) 轉(zhuǎn)義處理方式
今天小編就為大家分享一篇pymysql 插入數(shù)據(jù) 轉(zhuǎn)義處理方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03淺談python函數(shù)調(diào)用返回兩個或多個變量的方法
今天小編就為大家分享一篇淺談python函數(shù)調(diào)用返回兩個或多個變量的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01Python基礎(chǔ)之pandas數(shù)據(jù)合并
這篇文章主要介紹了Python基礎(chǔ)之pandas數(shù)據(jù)合并,文中有非常詳細的代碼示例,對正在學習python基礎(chǔ)的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-04-04python2.7讀取文件夾下所有文件名稱及內(nèi)容的方法
python,本身來說是一門高級編程語言,python它入門簡單,有基礎(chǔ)的學起來很快就能有簡單的應用,但是在非常高的抽象計算中,高級的python程序設(shè)計也是非常難學的。接下來給大家介紹python2.7讀取文件夾下所有文件名稱及內(nèi)容的方法,一起看看吧2018-02-02Python3使用Selenium獲取session和token方法詳解
這篇文章主要介紹了Python3使用Selenium獲取session和token方法詳解,需要的朋友可以參考下2021-02-02