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

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的密钥:
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值