欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

AES

程序员文章站 2024-03-14 14:33:46
...
import base64
from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes
secret = "123456789123456789123456789123"             #由用户输入的16位或24位或32位长的初始密码字符串
print('**长度:',len(secret))
#**处理,16的整数倍,
def add_to_16(text):
    while len(text)%16 !=0:
        text+='\0'
    return (text)
secret=add_to_16(secret)
print('不做任何填充,但是要求明文必须是16字节的整数倍:',secret)
'''PKSC5Padding 填充
def add_to_16(text):
    byte=16-len(text)%16
    print(byte)
    return (text+chr(byte)*byte)
secret=add_to_16(secret)
print(secret)
'''
cipher = AES.new(secret.encode('utf-8'),AES.MODE_ECB)        #通过AES处理初始密码字符串,并返回cipher对象
#iv=get_random_bytes(16)  #随机获取16位变量
#cipher = AES.new(secret.encode('utf-8'),AES.MODE_CBC,iv)
data="123456789123456"
#明文处理
def add_to_16(text):
    while len(text)%16 !=0:
        text+='\0'
    return (text)
data=add_to_16(data)
print('明文:',data)
encrypt_data= cipher.encrypt(data.encode('utf-8'))     #输入需要加密的字符串,注意字符串长度要是16的倍数。16,32,48..
print ('密文',encrypt_data)                                            #输出加密后的字符串
encrypt_data = base64.b64encode(encrypt_data)
print ('密文的base64编码:',base64.b64encode(encrypt_data))          #输出加密后的字符串的base64编码。
encrypt_data = base64.b64decode(encrypt_data)
print('密文的base64编码的解码:',encrypt_data)
#cipher = AES.new(secret.encode('utf-8'),AES.MODE_CBC,iv)
decrypt_data = cipher.decrypt(encrypt_data)
print('明文:',decrypt_data)
相关标签: AES