我是靠谱客的博主 坚强小甜瓜,最近开发中收集的这篇文章主要介绍python3 执行AES加密及解密方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

https://blog.csdn.net/hh775313602/article/details/78991340

python版本:3.6.5

首先安装pycryptodome

# pip install pycryptodome

加密方式特别简单,代码如下:

方式一:补0

#!/usr/bin/python
# -*- coding: utf-8 -*-
 
"""
 补0方式(ECB加密)
"""
 
import base64
 
from Crypto.Cipher import AES
 
 
# 补足字符串长度为16的倍数
def add_to_16(s):
    while len(s) % 16 != 0:
        s += ''
    return str.encode(s)  # 返回bytes
 
 
key = '1234567890123456'  # 密钥长度必须为16、24或32位,分别对应AES-128、AES-192和AES-256
text = 'abcdefg'  # 待加密文本
 
aes = AES.new(str.encode(key), AES.MODE_ECB)  # 初始化加密器,本例采用ECB加密模式
encrypted_text = str(base64.encodebytes(aes.encrypt(add_to_16(text))), encoding='utf8').replace('n', '')  # 加密
decrypted_text = str(aes.decrypt(base64.decodebytes(bytes(encrypted_text, encoding='utf8'))).rstrip(b'').decode("utf8"))  # 解密
 
print('加密值:', encrypted_text)
print('解密值:', decrypted_text)

方式二:pkcs5

#!/usr/bin/python
# -*- coding: utf-8 -*-
 
"""
 pkcs5补码方式(ECB加密)
"""
 
import base64
 
from Crypto.Cipher import AES
 
 
# 补足字符串长度为16的倍数
def add_to_16(s):
    while len(s) % 16 != 0:
        s += (16 - len(s) % 16) * chr(16 - len(s) % 16)
    return str.encode(s)  # 返回bytes
 
 
key = '1234567890123456'  # 密钥长度必须为16、24或32位,分别对应AES-128、AES-192和AES-256
text = 'abcdefg'  # 待加密文本
 
aes = AES.new(str.encode(key), AES.MODE_ECB)  # 初始化加密器,本例采用ECB加密模式
encrypted_text = str(base64.encodebytes(aes.encrypt(add_to_16(text))), encoding='utf8').replace('n', '')  # 加密
decrypted_text = aes.decrypt(base64.decodebytes(bytes(encrypted_text, encoding='utf8'))).decode("utf8")  # 解密
decrypted_text = decrypted_text[:-ord(decrypted_text[-1])]  # 去除多余补位
 
print('pkcs5加密值:', encrypted_text)
print('pkcs5解密值:', decrypted_text)

两种方式加密后的值是不一样的,解密方式也是不一样的。

最后

以上就是坚强小甜瓜为你收集整理的python3 执行AES加密及解密方法的全部内容,希望文章能够帮你解决python3 执行AES加密及解密方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(66)

评论列表共有 0 条评论

立即
投稿
返回
顶部