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