使用Python实现AES CBC加密的例子

本文详细记录了如何使用Python实现AES加密模式CBC的过程,旨在方便日后查阅。内容包括AES加密的基本原理和CBC模式的工作方式,以及具体代码实现。
摘要由CSDN通过智能技术生成

如题,纯个人记录下,好记性不如烂笔头,方面下次查找。

from Crypto.Cipher import AES
import hashlib
import base64

#计算sha
def get_sha256(text):
    return hashlib.sha256(text.encode('utf-8'))

def aes256_cbc_encrypt(text, key, iv):
    ##CBC补齐16倍数,NoPadding方式
    padding = lambda s: s + (16 - len(s) % 16) * '\0'
    text    = padding(text)

    #key和iv都要是bytes类型数据
    cryptos  = AES.new(key, AES.MODE_CBC, iv)
    #加密接口参数是bytes类型的数据
    enc_text = cryptos.encrypt(text.encode('utf8'))

    print(base64.b64encode(enc_text).decode('utf8'))

    #enc_text是bytes类型的数据,可根据实际需要base64等操作
    return enc_text

def aes256_cbc_decrypt(text, key, iv):
    #参数都是bytes类型的数据
    cryptos  = AES.new(key, AES.MODE_CBC, iv)
    #text如果不是bytes,需要转换
    dec_text = cryptos.decrypt(text)

    #dec_text是bytes类型的数据,可根据实际需要base64等操作,这里是转str
    return dec_text.decode('utf8')

#使用sha256的值,作为AES25
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值