【編程】Python3 使用自定義編碼字符表解密Base64數據


前言

Python提供了“base64”模塊用於編碼、解碼Base64數據。
但是並不是所有的Base64數據都會使用默認的字符表進行編碼,所以這里對Python下實現自定義編碼字符表解密Base64數據做一個簡要記錄。(關於Base64內部實現等相關內容可以參考這篇文章

Python2.7

 1 # -*- coding: utf-8
 2 import base64
 3 import string
 4 
 5 STANDARD_ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
 6 CUSTOM_ALPHABET = 'JXaYOjSNTet1dDrHsVlc0m5EknG7Ko6qibhFBuyzQUwxWCp4ZLf23gAvMR8PI9+/'
 7 ENCODE_TRANS = string.maketrans(STANDARD_ALPHABET, CUSTOM_ALPHABET)
 8 DECODE_TRANS = string.maketrans(CUSTOM_ALPHABET, STANDARD_ALPHABET)
 9 
10 def encode(input):
11     return base64.b64encode(input).translate(ENCODE_TRANS)
12 
13 def decode(input):
14     return base64.b64decode(input.translate(DECODE_TRANS))
15 
16 enstr = encode("123")
17 print enstr #dcT2
18 
19 destr = decode(enstr)
20 print destr #123

Python3.8

 1 # -*- coding: utf-8
 2 import base64
 3 
 4 STANDARD_ALPHABET = b'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
 5 CUSTOM_ALPHABET = b'JXaYOjSNTet1dDrHsVlc0m5EknG7Ko6qibhFBuyzQUwxWCp4ZLf23gAvMR8PI9+/'
 6 ENCODE_TRANS = bytes.maketrans(STANDARD_ALPHABET, CUSTOM_ALPHABET)
 7 DECODE_TRANS = bytes.maketrans(CUSTOM_ALPHABET, STANDARD_ALPHABET)
 8 
 9 def encode(input):
10   return base64.b64encode(input).translate(ENCODE_TRANS)
11 
12 def decode(input):
13   return base64.b64decode(input.translate(DECODE_TRANS))
14 
15 enstr = encode("123".encode())
16 print(enstr.decode()) #dcT2
17 
18 destr = decode(enstr)
19 print(destr.decode()) #123

參考鏈接:

https://bbs.khcloud.net/?thread-285.htm


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM