[Python3] RSA的加解密和签名/验签实现 -- 使用pycrytodome

本文介绍了如何使用Python3的pycryptodome库实现RSA加解密和签名验证。首先,解释了pycrypto与pycryptodome的区别,并提供了安装指南。接着,阐述了RSA算法的基本原理,包括公钥加密和私钥解密,以及私钥签名和公钥验签的用途。最后,讨论了在实际应用中,如何结合加密和签名来确保数据的安全性和完整性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Crypto 包介绍:#

pycrypto,pycrytodome 和 crypto 是一个东西,crypto 在 python 上面的名字是 pycrypto
它是一个第三方库,但是已经停止更新,所以不建议安装这个库;
windows 下 python3.6 版本以上安装比较麻烦(本人是Python3.7,尝试安装未成功,如果需要尝试安装的,可以参考点击这里),在安装无果的情况下,可以安装
pycryptodome,它是pycrypto 的延伸版本,用法和 pycrypto 是一模一样的;

pip install pycryptodome

安装完成后,在 Python 各种引用包存放路径下,把文件夹 crypto 改为 Crypto 即可。

RSA算法简介:

RSA加密算法是一种非对称加密算法,

加密的秘钥是由公钥和私钥两部分组成秘钥对,

公钥用来加密消息,私钥用来对消息进行解密,

公钥是公开的,私钥则是用户自己保留的,

由于公钥是公开的,那么任何人只要获取到公钥,都可以使用公钥来加密发送伪造内容,出于安全性考虑,在发送消息之前我们可以使用RSA来签名。

签名使用私钥来进行签名,使用公钥来进行验签,通过签名我们可以确保用户身份的唯一性,从而提高安全性。
在这里插入图片描述

#Python学习交流群797877325 免费获取系统学习教程
from Crypto.PublicKey import RSA
import Crypto.Signature.PKCS1_v1_5 as sign_PKCS1_v1_5  # 用于签名/验签
from Crypto.Cipher import PKCS1_v1_5  # 用于加密
from Crypto import Random
from Crypto import Hash

# 手动生成一个密钥对(项目中的密钥对一般由开发来生成),生成密钥对的时候,
可以指定生成的长度,一般推荐使用1024bit,
# 1024bit的rsa公钥,最多只能加密117byte的数据,数据流超过这个数则需要对
数据分段加密,
# 目前1024bit长度的密钥已经被证明了不够安全,尽量使用2048bit长度的密钥,
2048bit长度密钥最多能加密245byte长度的数据
计算长度公式:密钥长度/8 - 11 = 最大加密量 (单位 bytes)
下面生成一对2048bit的密钥:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值