python aes加密使用随机iv

在AES加密中,通常使用随机生成的IV来增加密码的安全性。IV是一个随机数,在每次加密过程中都会与密钥一起使用。解密时,需要使用相同的IV来正确还原明文。
通过pip install pycryptodome 来安装加密模块。

from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
from Crypto.Random import get_random_bytes


def encrypt(plaintext, key):
    # 生成随机IV
    iv = get_random_bytes(AES.block_size)

    # 创建AES加密器
    cipher = AES.new(key, AES.MODE_CBC, iv)
    # 对明文进行填充
    padded_plaintext = pad(plaintext,AES.block_size)
    # 加密
    ciphertext = cipher.encrypt(padded_plaintext)
    # 返回IV和密文
    return iv + ciphertext

在这里插入图片描述

# 使用自定义密钥
key = b'abcdefghijklmnop'
plaintext = b'123456'
# 加密
ciphertext = encrypt(plaintext, key)
print("Ciphertext:", ciphertext)
# 解密
decrypted_plaintext = decrypt(ciphertext, key)
print("Decrypted plaintext:", decrypted_plaintext)

pad()和unpad()是用于填充和去除填充的自定义函数,实际使用中需要根据具体情况选择合适的方法,可自定义补位。
在这里插入图片描述
AES.block_size可以根据AES加密模式的不同而有所不同,例如在CBC模式下为16字节。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值