【Python】cryptography和pycryptodome库使用

article/2025/9/22 23:46:09

题目👇

(1)使用cryptography模块,编写完整的AES-CBC加解密函数,函数接口为:

def encrypt_CBC(key, plaintext, iv)、def decrypt_CBC(key, ciphertext, iv);

(2)使用pycryptodome模块,编写程序,实现RSA-OAEP加解密;

知识补充👇

(1)AES是高级加密标准(Advanced Encryption Standard)的缩写,AES是最常见的对称加密算法。

对称加密算法也就是加密和解密用相同的密钥,同一个秘钥即用来加密,也用来解密。

关于加密解密的原理可以搜索一下相关的文章。

RSA是一种典型的非对称密钥密码体制,从加密密钥和解密密钥中的任何一个推导出另一个在计算上是不可行的。RSA的安全性建立在“大数分解和素性检测”这一著名数论难题的基础上。

公钥对可以完全公开,不需要进行保密,但必须提供完整性检测机制以保证不受篡改;

私钥由用户自己保存。通信双方无需实现交换密钥就可以进行保密通信。

(2)RSA密码体制算法如下:

由用户选择两个互异并且距离较远的大素数p和q;

计算n=p×q和f(n)=(p-1)×(q-1);

选择正整数e,使其与f(n)的最大公约数为1;

然后计算正整数d,使得e×d 对f(n)的余数为1,即e×d≡1 mod f(n),最后销毁p和q。

经过以上步骤,得出公钥对(n,e)和私钥对(n,d)。

设M为明文,C为对应的密文,

则加密变换为:C=M^e mod n;

解密变换为:M=C^d mod n。

安装使用👇

在python中,扩展库pycrypto、pycryptodome和cryptography提供了SHA系列算法和RIPEMD160等多个安全哈希算法,以及 DES、AES、RSA、DSA、ElGamal等多个加密算法和数字签名算法的实现。

crypto这个模块的安装比较特殊,可能会有点小坑,安装时需要注意!

crypto,pycrypto,pycryptodome这三个python中密码学相关模块的功能是一样的。

但是crypto与pycrypto已经没有维护了,所以推荐使用pycryptodome。

而且这几个模块的适用性不同,分Linux和Windows操作系统,还分Python2和Python3......

在 Windows 中,不管是 Python2 和 Python3 ,都不能用 crypto 和 pycrypto ,只能用 pycryptodome模块进行密码学编程。

在 Linux 中,不管是 Python2 和 Python3 ,都不能用 crypto ,只能用 pycrypto 和 pycryptodome 。

下面是windows系统下Python3的安装教程,安装之前,最好先把 crypto 和 pycrypto 卸载了,否则命令行会报好多红字的错误。

安装命令如下:

pip uninstall crypto
pip uninstall pycrypto
pip install pycryptodome

代码示例👇

#coding:utf-8
#author:Mitchell#使用cryptography模块,编写完整的AES-CBC加解密函数,函数接口为:
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
from Crypto.Util.Padding import unpad
from Crypto.Random import get_random_bytesdef encrypt_CBC(key, plaintext, iv):#实例化加密套件,使用CBC模式cipher = AES.new(key, AES.MODE_CBC, iv)#对内容进行加密,pad函数用于分组和填充encrypted_data = cipher.encrypt(pad(plaintext, AES.block_size))return encrypted_data
def decrypt_CBC(key, ciphertext, iv):cipher = AES.new(key, AES.MODE_CBC, iv)tmp = cipher.decrypt(ciphertext)decrypted_data = unpad(tmp, AES.block_size)return decrypted_datadata = b"I love sdu" #要加密的内容
print("原始明文=",data)
key = get_random_bytes(16) #随机生成16字节(即128位)的加密密钥
iv = get_random_bytes(16)
encrypted_data=encrypt_CBC(key,data,iv)
print("AES加密后的密文=",encrypted_data)
decrypted_data=decrypt_CBC(key,encrypted_data,iv)
print("AES解密后的明文=",decrypted_data)#使用pycryptodome模块,编写程序,实现RSA-OAEP加解密;
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
#生成密钥
key = RSA.generate(1024)
#提取私钥
private_key = RSA.import_key(key.export_key())
print("私钥=",private_key)
#提取公钥
public_key = RSA.import_key(key.publickey().export_key())
print("公钥=",public_key)
data = b"I love sdu"
print("原始明文=",data)
#实例化加密套件
cipher = PKCS1_OAEP.new(public_key)
#加密
encrypted_data = cipher.encrypt(data)
print("RSA加密后的密文=",encrypted_data)
#实例化解密套件
cipher = PKCS1_OAEP.new(private_key)
#解密
decrypted_data = cipher.decrypt(encrypted_data)
print("RSA解密后的明文=",decrypted_data)

运行效果👇


http://chatgpt.dhexx.cn/article/1aCx6jHY.shtml

相关文章

《A Graduate Course in Applied Cryptography》Chapter 12 Chosen ciphertext secure pkc(4)finish

原文教材 与 参考资料: Boneh Dan , Shoup Victor . A Graduate Course in Applied Cryptography[J]. 该书项目地址(可以免费获取):http://toc.cryptobook.us/ 博客为对该书的学习笔记,并非原创知识,帮助理…

Aleo隐私智能合约编程__第四章__部署进链上Aleo Testnet3网络

文章目录 安装相关软件账户数据准备部署隐私应用 相关资料链接 官方部署文档 https://developer.aleo.org/testnet/getting_started/deploy_execute_demo/查看链上所有的程序 https://explorer.hamp.app/programs测试网领水 https://twitter.com/AleoFaucetAleo SDK在线工具 ht…

《A Graduate Course in Applied Cryptography》Chapter 12 Chosen ciphertext secure pkc(3)

原文教材 与 参考资料: Boneh Dan , Shoup Victor . A Graduate Course in Applied Cryptography[J]. 该书项目地址(可以免费获取):http://toc.cryptobook.us/ 博客为对该书的学习笔记,并非原创知识,帮助理…

shiro.crypto.CryptoException: Unable to correctly extract the Initialization Vector or ciphertext

错误 工程中使用了shiro,最近启动工程后通过接口访问就一直在报错,跟踪了一下源码,发现是cookie导致的。错误如下: org.apache.shiro.crypto.CryptoException: Unable to correctly extract the Initialization Vector or ciphertext. at o…

Bugku CRYPTO No Ciphertext RSA writeup by 树木

前言 菜鸡树木出的新密码题,质量不高,大佬们不要喷呜呜呜 题目信息 题目名称:No Ciphertext RSA 题目作者:树木有点绿 描  述: The ciphertext is unknown! 解题过程 通过观察发现题目给了dp,那么我们可以根据…

某cpws - ciphertext加密与数据解密

前言 本文仅用于学术交流。 学习探讨逆向知识,欢迎私信共享学习心得。 如有侵权,联系博主删除。 请勿商用,否则后果自负。 加密位置确定 网站 : aHR0cHMlM0EvL3dlbnNodS5jb3VydC5nb3YuY24vd2Vic2l0ZS93ZW5zaHUvMTgxMjE3Qk1US0hOVDJXMC9pbmRleC5odG1sJTNGcGFnZUlkJTNENTU2…

《A Traceable and Revocable Ciphertext-Policy Attribute-based Encryption Scheme Based》属性加密机制

《基于隐私保护的可追溯性和可撤销的密文策略属性加密》 论文链接:A Traceable and Revocable Ciphertext-Policy Attribute-based Encryption Scheme Based 1.可追踪和可撤销指的是什么? 可撤销性 用户撤销:撤销特定用户的所有属性&…

属性基加密仿真及代码实现(CP-ABE)论文:Ciphertext-Policy Attribute-Based Encryption

1、仿真论文:Ciphertext-Policy Attribute-Based Encryption 2、使用库:JPBC lombok 3、目录结构: 3.1 essay:论文 3.2 lib:jpbc库 3.3 params:椭圆曲线参数 3.4 src:源码 attribute&…

论文翻译—Ciphertext-Policy Attribute-Based Encryption

Abstract 在一些分布式系统中,只有当用户拥有一组特定的凭证或属性时,用户才能访问数据。目前,实施这种策略的唯一方法是使用一个受信任的服务器来存储数据并协调访问控制。但是,如果存储数据的任何服务器被泄露,那么数…

华为实习密文cipherText破解

很多小伙伴找我破解密文,但是最近比较忙,所以决定公布破解密文的程序。 连接如下:华为实习密文cipherText破解 分割线以下为之前的内容 前段时间面试了华为实习生,还在等待offer中。 之前一直可以通过一个网址查看进展&#x…

某某行政处罚文书网 (请求参数: ciphertext)

前言 本文仅用于学术交流。 学习探讨逆向知识,欢迎私信共享学习心得。 如有侵权,联系博主删除。 请勿商用,否则后果自负。 浅聊一下 该网站文书列表页请求时,会携带一个post参数ciphertext,这个参数在一定时间范围内是不变的,但是是有实效性的, 有效期大概在两个小时…

十七届全国大学生智能车竞赛华南赛区开幕式议程

十七届全国大学生智能车竞赛 华南赛区开幕式议程 开幕式时间:2022年7月25日,上午8:30开幕式地址:哈尔滨工业大学(深圳)活动中心 开幕式议程: 一、介绍参加会议的嘉宾二、奏国歌三、嘉宾致辞 …

全国大学生智能车竞赛 |掀桌子的时候

01 掀桌子 又到了掀桌子的时候了 一、掀桌子 每年一度的全国大学生智能车竞赛竞赛到了这个时候,  都开始进入掀桌子的周期了。 参加过一届比赛的同学开始纷纷给组委会提出比赛内容的建议。  这不, 刚刚看到同学在后台的一个留言,  着实把我…

第十五届全国大学生智能车竞赛各分赛区赛道数量以及比赛系统数量

作者:卓晴博士 全国大学生智能车竞赛秘书处 2020-07-26 Sunday □ 各分赛区赛道数量 赛区比赛时间东北8月15-17日华北8月11-13日华东8月23-26日华南8月15-20日西部8月12-14日安徽11月前后山东8月12-15日浙江8月9-11日 □ 各分赛区所需要比赛系统数量 今年举办集中线下比赛的赛区…

时雨月五| AI机器学习实战の电磁导航智能车中神经网络应用的问题与思考

“不愤不启,不悱不发。举一隅不以三隅反,则不复也”。 – 《论语述而》 再次将论语中的这句“不愤不启,不悱不发”引用在这里,说明学生的学习的活动部分来自老师,大部分来自于自己主动的“愤”“悱”,否则…

第十五届全国大学生智能车竞赛室外光电创意组别进入线下比赛的队伍名单

作者:卓晴博士,清华大学自动化系 更新时间:2020-08-05 Wednesday 第十五届全国大学生智能车竞赛组委会在7月4日公布了室外光电ROS预赛方案 ,截止到7月20日,公布到213支队伍的の报名信息,经过核实去重之后,最…

国赛来咯,全国大学生智能汽车竞赛百度赛道正式开启

「第17届全国大学生智能汽车竞赛—完全模型组竞速赛」1月15日全面启航!大赛组委会秘书长卓晴教授届时将亲临百度飞桨直播间,和同学们一起聊备赛,话今年。 01 竞赛简介 「全国大学生智能汽车竞赛」是教育部倡导的大学生科技A类竞赛&#xff…

电解电容为什么会爆炸?

关注星标公众号,不错过精彩内容 作者 | 卓晴 来源 | TsinghuaJoking 一、电解电容 电解电容是通过电解质作用在电极上形成的氧化层作为绝缘层的电容,通常具有较大的容量。电解质是液体、胶冻状富含离子的物质,大多数电解电容都是有极性的&…

从150kHz 到 150MHz漫谈智能车竞赛中的无线导航技术

简 介: 这个文章来自于太原理工大学萧老师给智能车竞赛无线导航方案的建议。 关键词: 智能车竞赛,导航,无线电,萧老师 卓晴老师你好! 节能信标组利用信标发出的信号对信标定位。用摄像头定位比较容易实现。…

Bootstrapvalidator表单验证+ 模态框 Ajax请求 Demo

BooStrapValidator网络引用地址:http://www.bootcdn.cn/bootstrap-validator/ BooStrapValidator文件下载 gitHub地址https://github.com/nghuuphuoc/bootstrapvalidator/ 这里模拟了一个后台数据返回,即请求url 为 validator.json,该文件内容为 false,…