python3.6 實現AES加密、解密(改版)
前言
之前寫過一篇aes的加密文章,當時的寫法還不太成熟,後續參考了另一個博主的博客後恍然大悟。在此附上地址:
http://blog.csdn.net/hh775313602/article/details/78991340
編碼
#AES-demo
import base64
from Crypto.Cipher import AES
"""
採用AES對稱加密演算法
"""
# str不是16的倍數那就補足為16的倍數
def add_to_16(value):
while len(value) % 16 != 0:
value += " "
return str.encode(value) # 返回bytes
#加密方法
def encrypt_oracle():
# 秘鑰
key = "123456"
# 待加密文本
text = "abc123def456"
# 初始化加密器
aes = AES.new(add_to_16(key), AES.MODE_ECB)
#先進行aes加密
encrypt_aes = aes.encrypt(add_to_16(text))
#用base64轉成字元串形式
encrypted_text = str(base64.encodebytes(encrypt_aes), encoding="utf-8") # 執行加密並轉碼返回bytes
print(encrypted_text)
#解密方法
def decrypt_oralce():
# 秘鑰
key = "123456"
# 密文
text = "qR/TQk4INsWeXdMSbCDDdA=="
# 初始化加密器
aes = AES.new(add_to_16(key), AES.MODE_ECB)
#優先逆向解密base64成bytes
base64_decrypted = base64.decodebytes(text.encode(encoding="utf-8"))
#執行解密密並轉碼返回str
decrypted_text = str(aes.decrypt(base64_decrypted),encoding="utf-8").replace(" ","")
print(decrypted_text)
if __name__ == "__main__":
# encrypt_oracle()
decrypt_oralce()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
總結
大體思想依舊沒有變,用pyCryptodome模塊帶的aes先將秘鑰,以及要加密的文本填充為16位,隨後對aes產生的位元組碼進行base64位編碼,轉為字元串的形式即可,解密思想逆過來即可。先逆向解密base64成bytes,執行解密密並轉碼返回str,將多餘位數的』 』替換為空
TAG:程序員小新人學習 |