python密碼學(xué)RSA密碼解密教程
本章是前一章的延續(xù),我們使用RSA算法逐步實(shí)現(xiàn)加密,并詳細(xì)討論它.
用于解密密文的函數(shù)是as跟隨 :
def?decrypt(ciphertext,?priv_key): ???cipher?=?PKCS1_OAEP.new(priv_key) ???return?cipher.decrypt(ciphertext)
對(duì)于公鑰加密或非對(duì)稱密鑰加密,重要的是要保持兩個(gè)重要的功能,即身份驗(yàn)證和授權(quán).
授權(quán)
授權(quán)是確認(rèn)發(fā)件人是唯一發(fā)送郵件的人的過程.以下代碼解釋了這個(gè) :
def?sign(message,?priv_key,?hashAlg="SHA-256"): ???global?hash ???hash?=?hashAlg ???signer?=?PKCS1_v1_5.new(priv_key) ??? ???if?(hash?==?"SHA-512"): ??????digest?=?SHA512.new() ???elif?(hash?==?"SHA-384"): ??????digest?=?SHA384.new() ???elif?(hash?==?"SHA-256"): ??????digest?=?SHA256.new() ???elif?(hash?==?"SHA-1"): ??????digest?=?SHA.new() ???else: ??????digest?=?MD5.new() ???digest.update(message) ???return?signer.sign(digest)
身份驗(yàn)證
身份驗(yàn)證可以通過驗(yàn)證方法解釋,如下所示去;
def?verify(message,?signature,?pub_key): ???signer?=?PKCS1_v1_5.new(pub_key) ???if?(hash?==?"SHA-512"): ??????digest?=?SHA512.new() ???elif?(hash?==?"SHA-384"): ??????digest?=?SHA384.new() ???elif?(hash?==?"SHA-256"): ??????digest?=?SHA256.new() ???elif?(hash?==?"SHA-1"): ??????digest?=?SHA.new() ???else: ??????digest?=?MD5.new() ???digest.update(message) ???return?signer.verify(digest,?signature)
驗(yàn)證數(shù)字簽名以及發(fā)件人和收件人的詳細(xì)信息.為安全起見,這會(huì)增加更多的權(quán)重年齡.
RSA密碼解密
您可以使用以下代碼進(jìn)行RSA密碼解密 :
from?Crypto.PublicKey?import?RSA from?Crypto.Cipher?import?PKCS1_OAEP from?Crypto.Signature?import?PKCS1_v1_5 from?Crypto.Hash?import?SHA512,?SHA384,?SHA256,?SHA,?MD5 from?Crypto?import?Random from?base64?import?b64encode,?b64decode hash?=?"SHA-256" def?newkeys(keysize): ???random_generator?=?Random.new().read ???key?=?RSA.generate(keysize,?random_generator) ???private,?public?=?key,?key.publickey() ???return?public,?private def?importKey(externKey): ???return?RSA.importKey(externKey) def?getpublickey(priv_key): ???return?priv_key.publickey() def?encrypt(message,?pub_key): ???cipher?=?PKCS1_OAEP.new(pub_key) ???return?cipher.encrypt(message) def?decrypt(ciphertext,?priv_key): ???cipher?=?PKCS1_OAEP.new(priv_key) ???return?cipher.decrypt(ciphertext) def?sign(message,?priv_key,?hashAlg?=?"SHA-256"): ???global?hash ???hash?=?hashAlg ???signer?=?PKCS1_v1_5.new(priv_key) ??? ???if?(hash?==?"SHA-512"): ??????digest?=?SHA512.new() ???elif?(hash?==?"SHA-384"): ??????digest?=?SHA384.new() ???elif?(hash?==?"SHA-256"): ??????digest?=?SHA256.new() ???elif?(hash?==?"SHA-1"): ??????digest?=?SHA.new() ???else: ??????digest?=?MD5.new() ???digest.update(message) ???return?signer.sign(digest) def?verify(message,?signature,?pub_key): ???signer?=?PKCS1_v1_5.new(pub_key) ???if?(hash?==?"SHA-512"): ??????digest?=?SHA512.new() ???elif?(hash?==?"SHA-384"): ??????digest?=?SHA384.new() ???elif?(hash?==?"SHA-256"): ??????digest?=?SHA256.new() ???elif?(hash?==?"SHA-1"): ??????digest?=?SHA.new() ???else: ??????digest?=?MD5.new() ???digest.update(message) ???return?signer.verify(digest,?signature)
以上就是python密碼學(xué)RSA密碼解密教程的詳細(xì)內(nèi)容,更多關(guān)于python密碼學(xué)RSA解密的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python lambda表達(dá)式(匿名函數(shù))寫法解析
這篇文章主要介紹了python lambda表達(dá)式(匿名函數(shù))寫法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
python?chinesecalendar報(bào)錯(cuò):"no?available?data?for?ye
這篇文章主要介紹了python?chinesecalendar報(bào)錯(cuò):“no?available?data?for?year?{},?only?year?between?[{},?{}]?supported“的相關(guān)知識(shí),需要的朋友可以參考下2023-03-03
python實(shí)現(xiàn)簡(jiǎn)單倒計(jì)時(shí)功能
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡(jiǎn)單倒計(jì)時(shí)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-04-04
python中字符串內(nèi)置函數(shù)的用法總結(jié)
這篇文章給大家總結(jié)了python中字符串內(nèi)置函數(shù)的用法以及相關(guān)知識(shí)點(diǎn)內(nèi)容,有興趣的朋友學(xué)習(xí)下。2018-09-09
python高級(jí)搜索實(shí)現(xiàn)高效搜索GitHub資源
這篇文章主要為大家介紹了python高級(jí)搜索來高效搜索GitHub,從而高效獲取所需資源,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-11-11
Python使用cx_Oracle模塊將oracle中數(shù)據(jù)導(dǎo)出到csv文件的方法
這篇文章主要介紹了Python使用cx_Oracle模塊將oracle中數(shù)據(jù)導(dǎo)出到csv文件的方法,涉及Python中cx_Oracle模塊與csv模塊操作Oracle數(shù)據(jù)庫(kù)及csv文件的相關(guān)技巧,需要的朋友可以參考下2015-05-05
python?HTTP協(xié)議相關(guān)庫(kù)requests urllib基礎(chǔ)學(xué)習(xí)
這篇文章主要介紹了python?HTTP協(xié)議相關(guān)庫(kù)requests urllib基礎(chǔ)學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06

