【编程】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
【编程】Python3 使用自定义编码字符表解密Base64数据的更多相关文章
- base64 换表 解密脚本
做逆向经常遇到换表的base64 有了py脚本 一切都好说: import base64 import string str1 = "x2dtJEOmyjacxDemx2eczT5cVS9f ...
- wordpress 自定义登录表单
wordpress 有很多插件支持自定义登录表单,本文讨论无插件形式. 自定义登录表单又分为两种 自定义登录表单 在前端创建一个登录页面
- WPF ScrollViewer(滚动条) 自定义样式表制作 再发一套样式 细节优化
艾尼路 出的效果图 本人嵌套 WPF ScrollViewer(滚动条) 自定义样式表制作 图文并茂 WPF ScrollViewer(滚动条) 自定义样式表制作 (改良+美化) 源代码
- 如何利用WordPress创建自定义注册表单插件
来源:http://www.ido321.com/1031.html 原文:Creating a Custom WordPress Registration Form Plugin 译文:创建一个定制 ...
- Vc数据库编程基础MySql数据库的表查询功能
Vc数据库编程基础MySql数据库的表查询功能 一丶简介 不管是任何数据库.都会有查询功能.而且是很重要的功能.上一讲知识简单的讲解了表的查询所有. 那么这次我们需要掌握的则是. 1.使用select ...
- Vc数据库编程基础MySql数据库的表增删改查数据
Vc数据库编程基础MySql数据库的表增删改查数据 一丶表操作命令 1.查看表中所有数据 select * from 表名 2.为表中所有的字段添加数据 insert into 表名( 字段1,字段2 ...
- 利用 ajax自定义Form表单的提交方式
需求场景:有时候单纯的form表单无法向后端传递额外的参数 比如需要action传递js异步生成的参数 ,form表单默认的action就无法满足需求,这时就需要我们自定义form表单的提交方式. h ...
- 第四百零六节,自定义用户表类来继承Django的用户表类,
第四百零六节,自定义用户表类来继承Django的用户表类, models.py from django.db import models # Create your models here. from ...
- 看用Tornado如何自定义实现表单验证
我们知道,平时在登陆某个网站或软件时,网站对于你输入的内容是有要求的,并且会对你输入的错误内容有提示,对于Django这种大而全的web框架,是提供了form表单验证功能,但是对于Tornado而言, ...
- iOS开发之 AES+Base64数据混合加密与解密
2016-04-08 09:03 编辑: liubinqww 分类:iOS开发 来源:liubinqww 投稿 4 889 "APP的数据安全已经牵动着我们开发者的心,简单的MD5/ ...
随机推荐
- wget 多线程下载 mwget 工具安装
# for centos mini #yum -y install gcc-c++ intltool libssl-dev yum -y install gcc-c++ intltool openss ...
- Django操作mongo数据库二(MongoClient方式)
一.基本环境 1.开发环境: Python环境:Python 3.8.16 Django环境:4.1 2.需要安装的包 pip install pymongo pip install mongoeng ...
- 基于注解的AOP
1.引入依赖 <!--spring aop依赖--> <dependency> <groupId>org.springframework</groupId&g ...
- 从main_phase跳回reset_phase的方式
在main_phase中调用: phase.jump(uvm_reset_phase::get()); 注意需要防止进入死循环.
- SpringBoot启动流程简要分析
声明 源码基于Spring Boot 2.3.12.RELEASE 背景 此文的目的主要想弄明白为什么在Spring Boot中注册Servlet.Filter.Listener组件时需要加上@Ser ...
- idea插件Tranlation配置有道搜索引擎
idea配置有道翻译引擎 一.更换翻译引擎原因 由于Google在2022年9月末宣布关闭GoogleTranslate在中国的服务,原本在chrome浏览器和idea上使用的google翻译引擎也不 ...
- Twig
{{ dump() }}{{ dump(variable_name) }}List available variables (at top level): {{ dump(_context|keys) ...
- java面试准备基础篇
1.Java中常用关键字和用途 synchronized: 加锁 transient 不参与序列化和反序列化 volatile 保证其他线程可见性,不保证原子性,禁止指令重排 2.hashCode() ...
- C# 开源NuGet插件
ExcelDataReader 开源免费,Excel读取插件 GitHub - ExcelDataReader/ExcelDataReader: Lightweight and fast libra ...
- fftw安装
1. 下载fftw 2.tar -zxvf fftw.tar.gz 3. ./configure --prefix=path --enable-sse2 --enable-avx --enable-f ...