以下是Python中使用AES進(jìn)行加密和解密的示例腳本:
使用AES-256-CBC模式對(duì)指定的字符串進(jìn)行加密音羞。
首先污呼,需要安裝pycryptodome庫(kù)达罗,它是Python中的一個(gè)加密庫(kù)低斋,用于實(shí)現(xiàn)各種加密算法赃春。
from Crypto.Cipher import AES
import base64
# 加密函數(shù)
def aes_encrypt(key, text):
# 將密鑰進(jìn)行補(bǔ)位
key_bytes = key.encode('utf-8')
key_bytes += b'\x00' * (16 - len(key_bytes) % 16)
# 使用AES加密
aes = AES.new(key_bytes, AES.MODE_ECB)
text_bytes = text.encode('utf-8')
text_bytes += b'\x00' * (16 - len(text_bytes) % 16)
encrypted_bytes = aes.encrypt(text_bytes)
# 返回加密后的結(jié)果
return base64.b64encode(encrypted_bytes).decode('utf-8')
# 解密函數(shù)
def aes_decrypt(key, encrypted_text):
# 將密鑰進(jìn)行補(bǔ)位
key_bytes = key.encode('utf-8')
key_bytes += b'\x00' * (16 - len(key_bytes) % 16)
# 使用AES解密
aes = AES.new(key_bytes, AES.MODE_ECB)
encrypted_bytes = base64.b64decode(encrypted_text.encode('utf-8'))
decrypted_bytes = aes.decrypt(encrypted_bytes).rstrip(b'\x00')
# 返回解密后的結(jié)果
return decrypted_bytes.decode('utf-8')
# 示例
key = '1234567890123456'
text = 'Hello, world!'
encrypted_text = aes_encrypt(key, text)
print('加密后的結(jié)果:', encrypted_text)
decrypted_text = aes_decrypt(key, encrypted_text)
print('解密后的結(jié)果:', decrypted_text)
解釋一下:
在這個(gè)例子中愉择,key和text是硬編碼的。在實(shí)際使用中织中,你應(yīng)該從安全的位置存儲(chǔ)key和text锥涕,并在需要時(shí)從這個(gè)位置讀取它們。輸出應(yīng)該是一個(gè)Base64編碼的字符串狭吼,表示加密后的消息层坠。
在這個(gè)示例中,我們使用了pycryptodome庫(kù)中的AES類(lèi)來(lái)進(jìn)行加密和解密刁笙,同時(shí)使用了base64庫(kù)來(lái)進(jìn)行字節(jié)和字符串之間的轉(zhuǎn)換破花。需要注意的是,AES加密和解密時(shí)所使用的密鑰和明文都需要進(jìn)行補(bǔ)位疲吸,以保證其長(zhǎng)度是16的倍數(shù)座每。