【编程】Python3 使用自定义编码字符表解密Base64数据
2024-10-22 05:02:17
前言
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
最新文章
- git init和git init -bare区别
- 四则运算项目git统计
- Release编译模式下,事件是否会引起内存泄漏问题初步研究
- jQuery offset,position,offsetParent,scrollLeft,scrollTop html控件定位 css position
- Windows Store App 应用程序安装目录
- lvM增减教程-转
- 1491: [NOI2007]社交网络 - BZOJ
- Adapter 适配器模式
- git支持中文
- 使用ORACLE SQL Tuning advisor快速优化低效的SQL语句
- Mapper XML Files详解
- nmap安装过程
- JVM学习记录-垃圾收集器
- mac电脑进行可见光通信实验要点
- linux学习第十三天 (Linux就该这么学)找到一本不错的Linux电子书
- html超文本标记语言基础一
- 笔记-ASP.NET WebApi
- luogu P3605 [USACO17JAN]Promotion Counting晋升者计数
- day64_SpringMVC学习笔记_02
- ZH奶酪:Python按行读取文件
热门文章
- uniapp(1)
- android判断是否连接wifi跟网络状态的判断及wifi信号强度的方法
- HashMap问题
- idea的操作快捷键
- 地址重写了,只是ip 没转发,应该是9999那个才对,rewrite /sbgl/(.*) http://127.0.0.1:9999/$1 permanent;,这样,
- Vue源码中的数据代理
- windows terminal用ssh连接已重装的服务器提示REMOTE HOST IDENTIFICATION HAS CHANGED!
- Linux 文件编码操作enca[适用Mac]
- 100多个常用 API 接口整理大全
- Android Custom View使用Databinding