Python中RSA密码解密的实现是怎样的
Admin 2022-08-19 群英技术资讯 530 次浏览
用于解密密文的函数是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密码解密 :
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)
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
Pygame是一个专门用来开发游戏的Python模块,主要用于开发、设计 2D 电子游戏。本文主要为大家介绍了通过Pygame制作一个简单的贪吃蛇游戏,感兴趣的同学可以关注一下
在本文中,小编将带大家学习一下Python中的lambda函数,并探讨使用它的优点和局限性。文中的示例代码讲解详细,感兴趣的可以了解一下
pip 是一个现代的、通用的安装和管理 Python 包的工具,这意味着它是一个工具,允许你安装和管理不属于标准库的其他库和依赖。
这篇文章主要给大家分享python中的四个高级数据类型,分别是字符,元组,列表,字典,下文实例介绍的很详细,对大家学习和理解python数据类型有一定的帮助,有需要的朋友可以参考,接下来跟随小编一起学习一下吧。
这篇文章主要介绍了pdf论文中python画的图Type 3 fonts字体不兼容的解决方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008