好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

python密码学RSA密码解密教程

本章是 前一章 的延续,我们使用RSA算法逐步实现加密,并详细讨论它.

用于解密密文的函数是as跟随 :

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)

验证数字签名以及发件人和收件人的详细信息.为安全起见,这会增加更多的权重年龄.

RSA密码解密

您可以使用以下代码进行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密码学RSA密码解密教程的详细内容,更多关于python密码学RSA解密的资料请关注其它相关文章!

查看更多关于python密码学RSA密码解密教程的详细内容...

  阅读:71次