Python使用CBC加密模式进行AES加密

这篇具有很好参考价值的文章主要介绍了Python使用CBC加密模式进行AES加密。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import padding
import base64

plaintext = "Hello, World!"
key = b"0123456789ABCDEF"  # 密钥长度必须为16、24或32字节(128、192或256位)
iv = b"1234567890ABCDEF"  # 初始向量长度必须为16字节
def encrypt(plaintext, key, iv):
    backend = default_backend()
    cipher = Cipher(algorithms.AES(key), modes.CBC(iv), backend=backend)
    encryptor = cipher.encryptor()

    padder = padding.PKCS7(algorithms.AES.block_size).padder()
    padded_plaintext = padder.update(plaintext.encode('utf-8')) + padder.finalize()

    ciphertext = encryptor.update(padded_plaintext) + encryptor.finalize()
    return base64.b64encode(ciphertext).decode('utf-8')
   
encrypted_text = encrypt(plaintext, key, iv)
print("加密结果:", encrypted_text)

在这个示例中,我们使用了 cryptography 库的 Cipher、algorithms、modes、backend 和 padding 模块。 encrypt 函数接受明文字符串、密钥和初始向量(IV)作为参数。

我们首先使用 Cipher 类来创建一个 AES 密码器对象,指定所需的 AES 算法、CBC 加密模式和密钥。然后,我们获取密码器的加密器,并使用 PKCS7 填充方式创建一个填充器对象。我们使用填充器对明文进行填充,得到经过填充的明文。

接下来,我们使用加密器对填充后的明文进行加密,得到密文。最后,我们使用 base64.b64encode 函数对密文进行 Base64 编码,并返回编码后的字符串。

请注意,在使用 CBC 模式时,需要确保密钥和初始向量在加密和解密过程中是一致的。同样,确保在 Android 和 Python 中使用相同的密钥格式、字符编码、填充方式和初始向量,以确保生成的加密结果一致。文章来源地址https://www.toymoban.com/news/detail-821013.html

到了这里,关于Python使用CBC加密模式进行AES加密的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • iOS MT19937随机数生成,结合AES-CBC加密算法实现。

    按处理顺序说明: 1. 生成随机数序列字符串函数 生成方法MT19937,初始种子seed,利用C++库方法,生成: 2. 对第一部中的随机数序列字符串进行sha256加密,得到64字节的一个数据流函数。  3. AES-CBC加密解密方法 /*     CCCrypt方法提供了CBC 和 ECB 两种AES加密模式,     如果不传

    2024年04月09日
    浏览(37)
  • 【密码学】为什么不推荐在对称加密中使用CBC工作模式

    这篇文章是我在公司内部分享中一部分内容的详细版本,如标题所言,我会通过文字、代码示例、带你完整的搞懂为什么我们不建议你使用cbc加密模式,用了会导致什么安全问题,即使一定要用需要注意哪些方面的内容。 注:本文仅从安全角度出发,未考虑性能与兼容性等因

    2024年02月06日
    浏览(47)
  • iOS-AES加解密各模式(ECB、CBC、CFB、OFB)的实现

    最近和服务器同学对接口进行数据加解密时用到了AES加密。原本以为AES就一种加密形式,对接过程中才学习到AES不同模式、不同填充方式下,结果都不相同。因此去学习了一下AES加密的基本概念、实现原理,以及各种模式下的区别与实现。 AES加密是对称加密的一种,全称是

    2024年02月02日
    浏览(35)
  • 通过禁用CBC模式解决SSH服务器CBC加密模式漏洞(CVE-2008-5161)

    可以先执行一下第四步,验证一下问题解决前后的区别 第一步,进入服务器找到 /etc/ssh/sshd_config文件 第二步,编辑该文件找到# Ciphers and keying 添加或者修改为(其实就是去掉CBC的算法) 保存退出 第三步,重启ssh服务 第四步,验证是否成功 如果最后面出现 congratulations to y

    2024年02月16日
    浏览(32)
  • Python 基于pycryptodome,实现对AES、DES、3DES、RSA等常用加密算法的使用,文末附各种加密的源码示例

    (中文名:加密圆顶)pycryptodome是一个基于c实现的Python库,它在2.x中支持2.7以上版本,或3.x中支持3.5以上版本的Python。 可以使用以下命令安装它: 该库支持以下特性 认证加密模式 Authenticated encryption modes (GCM, CCM, EAX, SIV, OCB) AES加密在英特尔上的加速 Accelerated AES on Intel platf

    2023年04月09日
    浏览(74)
  • java | 使用Cipher类实现AES所有常用加密模式

    AES 密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES(Data Encryption Standard),已经被多方分析且广为全世界所使用。 AES 是对称加密算法,优点:加密速度快;缺点:如果秘钥丢

    2024年02月13日
    浏览(26)
  • python实现AES加密

    目录 1.AES加密 2.需要导入的模块 3.定义好全局变量 4.编写加密函数 5.将密文解密 6.完整代码   AES的区块长度固定为128 比特,密钥长度则可以是128,192或256比特; AES有多种加密模式,其中CBC分组模式是SSL、IPSec的标准。使用CBC加密模式时需要提前给出一段初始化向量iv,因为明

    2023年04月08日
    浏览(25)
  • python 如何实现 aes 加密?

    在Python中,使用pycryptodome库可以轻松地实现AES加密。本文将介绍如何使用Python实现AES加密以及如何使用pycryptodome库来进行加密。 AES(Advanced Encryption Standard)是一种对称密钥加密算法,被广泛用于保护数据的安全。它是目前最常用的加密算法之一,被广泛应用于数据通信、数

    2024年02月07日
    浏览(28)
  • php7使用openssl_encrypt函数进行AES加密

    前言 手上有个api对接需求,要用到AES加密,要用到openssl_encrypt函数,记录一下,鉴权要求大概如下。 将明文先base64加密,后取前16位 判断字符串的字节型数据长度是否为16倍整,如不是则进行补充(PKCS#7标准) 对字符串进行AES加密后base64加密,其中 iv=A-16-Byte-String 介绍 参数

    2023年04月08日
    浏览(28)
  • 【Python】AES 128加密和解密

    AES加密标准又称为高级加密标准Rijndael加密法,是美国国家标准技术研究所NIST旨在取代DES的21世纪的加密标准。AES的基本要求是,采用对称分组密码体制,密钥长度可以为128、192或256位,分组长度128位,算法应易在各种硬件和软件上实现。1998年NIST开始AES第一轮分析、测试和征

    2024年02月13日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包