微慑信息网

python3下AES+ECB+pkcs7

AES加密方式有多种,根据实际情况而定,下述代码为ECB模式,AES(256),pkcs7补全

Python3实现AES加密,需要安装pycryptodome第三方库。

安装方式:

pip install pycryptodome

#coding:utf8
from Crypto.Util.Padding import pad
from Crypto.Cipher import AES
import base64

def aes_cipher(key, aes_str):
    # 使用key,选择加密方式
    aes = AES.new(key.encode('utf-8'), AES.MODE_ECB)
    pad_pkcs7 = pad(aes_str.encode('utf-8'), AES.block_size, style='pkcs7') 
    encrypt_aes = aes.encrypt(pad_pkcs7)
    # 加密结果
    encrypted_text = str(base64.encodebytes(encrypt_aes), encoding='utf-8')
    encrypted_text_str = encrypted_text.replace("\n", "")
    # 此处我的输出结果老有换行符,所以用了临时方法将它剔除

    return encrypted_text_str

if __name__ == '__main__':
    # key的长度需要补长(16倍数),补全方式根据情况而定,此处我就手动以‘0’的方式补全的32位key
    # key字符长度决定加密结果,长度16:加密结果AES(128),长度32:结果就是AES(256)
    key = "16位倍数key"
    # 加密字符串长同样需要16倍数:需注意,不过代码中pad()方法里,帮助实现了补全(补全方式就是pkcs7)
    aes_str = "123456"
    encryption_result = aes_cipher(key, aes_str)
    print(encryption_result)

 


这里的方法是可以实现,AES五种加密模式(CBC、ECB、CTR、OCF、CFB)的

使用 AES.new()方法时,第二个参数可以选择AES的不同的加密模式,根据需要选择;
pad()方法的style参数(补全方式),同样是可以灵活变动的

赞(0) 打赏
转载请附本站链接,未经允许不得转载,,谢谢:微慑信息网-VulSee.com » python3下AES+ECB+pkcs7

评论 抢沙发

微慑信息网 专注工匠精神

微慑信息网-VulSee.com-关注前沿安全态势,聚合网络安全漏洞信息,分享安全文档案例

访问我们联系我们

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

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册