Python——Crypto库实现公钥加密私钥解密
目录
- RSA介绍
- openssl生成公钥和私钥
- python实现生成公私钥
- PKCS1_v1_5包
- 数据加密以及解密
- 导入相关包
- 数据加密
- 数据解密
- 效果展示
Crypto 模块提供了加密功能,包含对 OpenSSL 的哈希、HMAC、加密、解密、签名、以及验证功能的一整套封装。
本文主要是Crypto RSA算法加密。
RSA介绍
RSA算法是一种非对称加密算法,即由一个私钥和一个公钥构成的密钥对,通过私钥签名,公钥验签,或者通过公钥加密,私钥解密。其中,公钥可以公开,私钥必须保密。
例:当小明给小红发送信息时,可以用小明自己的私钥签名,小红用小明的公钥验签,也可以用小红的公钥加密,小红用她自己的私钥解密,这就是非对称加密。相比对称加密,非对称加密只需要每个人各自持有自己的私钥,同时公开自己的公钥。
openssl生成公钥和私钥
使用openssl生成公钥和私钥:
首先,在命令行执行以下命令以生成一个RSA密钥对:
openssl genrsa -aes256 -out rsa-key.pem 2048
根据提示输入密码,这个密码是用来加密RSA密钥的,加密方式指定为AES256,生成的RSA的密钥长度是2048位。执行成功后,我们获得了加密的rsa-key.pem
文件。
第二步,通过上面的rsa-key.pem
加密文件,我们可以导出原始的私钥,命令如下:
openssl rsa -in rsa-key.pem -outform PEM -out rsa-prv.pem
输入第一步的密码,我们就可以获得加密后的私钥。
类似的,我们用下面的命令导出原始的公钥:
openssl rsa -in rsa-key.pem -outform PEM -pubout -out rsa-pub.pem
python实现生成公私钥
首先,需要安装Crypto库:
python3 -m pip install pycryptodome
from Crypto import Random
from Crypto.PublicKey import RSA# 获取一个伪随机数生成器
random_generator = Random.new().read
# 获取一个rsa算法对应的密钥对生成器实例
rsa = RSA.generate(1024, random_generator)# 生成私钥并保存
private_pem = rsa.exportKey()
with open('rsa.key', 'wb') as f:f.write(private_pem)# 生成公钥并保存
public_pem = rsa.publickey().exportKey()
with open('rsa.pub', 'wb') as f:f.write(public_pem)
PKCS1_v1_5包
RSA PKCS#1 v1.5加密标准主要描述了如何使用RSA公钥密码体系加密、解密数据,以及数字签名的算法
数据加密以及解密
导入相关包
from Crypto import Random
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5
import base64
数据加密
message = "This is a plain text."
with open('rsa.pub', 'r') as f:public_key = f.read()rsa_key_obj = RSA.importKey(public_key)cipher_obj = PKCS1_v1_5.new(rsa_key_obj)cipher_text = base64.b64encode(cipher_obj.encrypt(message.encode()))print('cipher text: ', cipher_text)
数据解密
with open('rsa.key', 'r') as f:private_key = f.read()rsa_key_obj = RSA.importKey(private_key)cipher_obj = PKCS1_v1_5.new(rsa_key_obj)random_generator = Random.new().readplain_text = cipher_obj.decrypt(base64.b64decode(cipher_text), random_generator)print('plain text: ', plain_text.decode())
效果展示
Python——Crypto库实现公钥加密私钥解密相关推荐
- python加密解密库openssl_OpenSSL和Python实现RSA Key公钥加密私钥解密
基于非对称算法的RSA Key主要有两个用途,数字签名和验证(私钥签名,公钥验证),以及非对称加解密(公钥加密,私钥解密).本文提供一个基于OpenSSL和Python进行非对称加解密的例子. 1. ...
- 分享一个RSA加解密工具类,公钥加密私钥解密、私钥加密公钥解密、私钥签名公钥验签、生成公钥私钥
测试: public static void main(String[] args) {try {//生成公钥私钥Map<String, Object> map = RSAUtil.ini ...
- C#实现RSA公钥加密私钥解密、私钥加密公钥解密以及Pcks12、X509证书加解密、签名验签
RSA的私钥签名公钥验签可以见 http://blog.csdn.net/starfd/article/details/51917916,所以这里就没提供对应代码,具体代码如下: using Org. ...
- RSA不对称加密,公钥加密私钥解密,私钥加密公钥解密
RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作. RSA是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一 ...
- ASP VBSCRIPT VBA RSA 公钥加密 私钥解密 私钥签名 公钥验签
<% '@title: Class_Crypt_Rsa '@author: ekede.com '@date: 2020-10-28 '@description: RSA 公钥加密->私钥 ...
- asp版 vbscript RSA公钥加密 / 私钥解密 / 私钥签名 / 公钥验签(支持中文)分段加密解密
最近有空在把自己的asp站点后端函数全部整理了下,在弄RSA的时候遇到了坑了,然后找到下面这位兄弟刚好发布的文章: https://blog.csdn.net/todaygods/article/de ...
- 公钥加密私钥解密私钥加密公钥解密
公钥加密体制 1.公钥加密体制用于保密性时,就是公钥加密,私钥解密. 因为公钥是可以公开了, 那么任何人都可以使用公钥对信息进行加密,但是只有持有私钥的人才能正确解密.这样就保证了信息的保密性,因为只 ...
- python rsa库_python RSA加密解密
RSA加密(pip install pycryptodome) 总结: Pycrypto提供了比较完善的加密算法.RSA广泛用于加密与解密,还有数字签名通信领域.使用Publick/Private秘钥 ...
- php ms2,php-python2-python3跨语言rsa公钥加密私钥解密
首先介绍背景:有一php项目,只提供了php加解密接口,因业务需求,需要提供python版本加密接口. 注意: 1.加密方式:使用Crypto包,RSA/1024bit KEY,实例加密使用公钥加密, ...
最新文章
- 娃哈哈信息部李钒助阵FBS2017 共探食品饮料信息化之路
- Iterator迭代器并发修改异常问题解决
- VS Code设置代码片段(C++)
- Node出错导致运行崩溃的解决方案
- [改善Java代码]不推荐使用binarySearch对列表进行检索
- SQL Server实例的十大安全注意事项
- 我们为什么要学习 Python、TypeScript 与 Go?
- Guava RateLimiter 实现 API 限流,这才是正确的姿势!
- 山西计算机职业学校排名2015,2015山西专科学校排名及排行榜
- 【瑕疵检测】基于matlab GUI OTSU织物疵点检测【含Matlab源码 860期】
- 基于嵌入式linux的流媒体传输系统
- Windows下SQLMAP的安装图解
- 深入理解JVM虚拟机读书笔记——类的加载机制
- 大二 数据结构 期末复习题(仅供参考)
- termux python教程_Termux 入门教程:架设手机 Server 下载文件
- 腾讯云服务器到期续费流程
- 获取华为云课程内嵌的课件pdf文件
- Windows系统服务器如何架设网站
- 企企通SRM:由“制造”到“智造”,高科技电子行业如何打造智慧供应链?
- Windows Live Writer插件:在WLW中插入语法高亮代码(二)