前言

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

最新文章

  1. git init和git init -bare区别
  2. 四则运算项目git统计
  3. Release编译模式下,事件是否会引起内存泄漏问题初步研究
  4. jQuery offset,position,offsetParent,scrollLeft,scrollTop html控件定位 css position
  5. Windows Store App 应用程序安装目录
  6. lvM增减教程-转
  7. 1491: [NOI2007]社交网络 - BZOJ
  8. Adapter 适配器模式
  9. git支持中文
  10. 使用ORACLE SQL Tuning advisor快速优化低效的SQL语句
  11. Mapper XML Files详解
  12. nmap安装过程
  13. JVM学习记录-垃圾收集器
  14. mac电脑进行可见光通信实验要点
  15. linux学习第十三天 (Linux就该这么学)找到一本不错的Linux电子书
  16. html超文本标记语言基础一
  17. 笔记-ASP.NET WebApi
  18. luogu P3605 [USACO17JAN]Promotion Counting晋升者计数
  19. day64_SpringMVC学习笔记_02
  20. ZH奶酪:Python按行读取文件

热门文章

  1. uniapp(1)
  2. android判断是否连接wifi跟网络状态的判断及wifi信号强度的方法
  3. HashMap问题
  4. idea的操作快捷键
  5. 地址重写了,只是ip 没转发,应该是9999那个才对,rewrite /sbgl/(.*) http://127.0.0.1:9999/$1 permanent;,这样,
  6. Vue源码中的数据代理
  7. windows terminal用ssh连接已重装的服务器提示REMOTE HOST IDENTIFICATION HAS CHANGED!
  8. Linux 文件编码操作enca[适用Mac]
  9. 100多个常用 API 接口整理大全
  10. Android Custom View使用Databinding