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的密钥: