base编码是Binary-to-text encoding的一种实现方法,它可以把二进制数据(含不可打印的字符)编码成可打印字符序列。

本文会不定时收录“base全家桶”:base64、base32、base16、base58、base91、base92、base36、base62、base85、base128等。

收录BaseHash(包含base36、base52、base56、base58、base62、base94)

------------------

0x01 base64

安装:python2.7自带

alphabet:

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/

padding:

=

使用:

import base64
c=base64.b64encode('pcat.cc')
m=base64.b64decode(c)
print c,m

0x02 base32

安装:python2.7自带

alphabet:

ABCDEFGHIJKLMNOPQRSTUVWXYZ234567

padding:

=

使用:

import base64
c=base64.b32encode('pcat.cc')
m=base64.b32decode(c)
print c,m

0x03 base16

安装:python2.7自带

alphabet:

0123456789ABCDEF

使用:

import base64
c=base64.b16encode('pcat.cc')
m=base64.b16decode(c)
print c,m

注意:

当b16decode的参数含有小写字母时,需要传入第二个参数True

base64.b16decode('706361742e6363',True)

或者使用python2.7的.decode('hex')则无须考虑大小写。

'706361742e6363'.decode('hex')

0x04 base58

github项目:https://github.com/keis/base58

安装:

pip install base58

alphabet:

123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz

使用:

import base58
c=base58.b58encode('pcat.cc')
m=base58.b58decode(c)
print c,m

0x05 base91

网址:http://base91.sourceforge.net/

github项目:https://github.com/aberaud/base91-python

安装:

pip install base91

alphabet:

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!#$%&()*+,./:;<=>?@[]^_`{|}~"

使用:

import base91
c=base91.encode('pcat.cc')
m=base91.decode(c)
print c,m

0x06 base92

github项目:https://github.com/thenoviceoof/base92

安装:

pip install base92

alphabet:

!#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_abcdefghijklmnopqrstuvwxyz{|}

a special denotation (an empty string):

~

使用:

import base92
c=base92.encode('pcat.cc')
m=base92.decode(c)
print c,m

注意:

encode,b92encode,base92_encode是一样的,
decode,b92decode,base92_decode是一样的。

0x07 base36

github项目:https://github.com/tonyseek/python-base36

安装:

pip install base36

alphabet:

0123456789abcdefghijklmnopqrstuvwxyz

使用:

import base36
c=base36.loads('pcat')
assert type(c)==int
m=base36.dumps(c)
print c,m

注意:

dumps函数接收的参数类型为int

0x08 base62

github项目:https://github.com/suminb/base62

安装:

pip install pybase62

alphabet:

0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

使用:

import base62
m=base62.decode('pcat')
assert type(m)==int
c=base62.encode(m)
print c,m c=base62.encodebytes('pcat.cc')
m=base62.decodebytes(c)
print c,m

注意:

encode函数接收的参数类型为int

0x09 base85

base85种类:

  1. ASCII85 encoding. This is the default. 0x00000000 is compressed to z. Spaces are not compressed.
  2. Adobe ASCII85 encoding is same as previous except data is enclosed between <~ and ~> .
  3. ZeroMQ (Z85) encoding. NOTE! Even though specification says input length must be divisible by 4, this is not currently enforced. Spaces and zeroes are not compressed.
  4. Character set from RFC1924 which is an April fools joke. Spaces and zeroes are not compressed.

(1) github项目:https://github.com/tuupola/base85

安装:

请先安装PHP的Composer,再

composer require tuupola/base85

使用:

(下面代码分别对应上面4种类型)

<?php
require __DIR__ . '/vendor/autoload.php';
use Tuupola\Base85; $m='pcat.cc'; $ascii85 = new Base85([
"characters" => Base85::ASCII85,
"compress.spaces" => false, "compress.zeroes" => true
]);
print $ascii85->encode($m) . PHP_EOL; $adobe85 = new Base85([
"characters" => Base85::ASCII85,
"compress.spaces" => false, "compress.zeroes" => true,
"prefix" => "<~", "suffix" => "~>"
]);
print $adobe85->encode($m) . PHP_EOL; $z85 = new Base85([
"characters" => Base85::Z85,
"compress.spaces" => false, "compress.zeroes" => false
]);
print $z85->encode($m) . PHP_EOL; $rfc1924 = new Base85([
"characters" => Base85::RFC1924,
"compress.spaces" => false, "compress.zeroes" => false
]);
print $rfc1924->encode($m) . PHP_EOL;

(2) python3中base64模块自带

#!/usr/bin/env python3
import base64
c=base64.a85encode(b'pcat.cc')
m=base64.a85decode(c)
print(c,m) c=base64.b85encode(b'pcat.cc')
m=base64.b85decode(c)
print(c,m)

注意:

python3中的a85encode和b85encode分别对应上面4种类型的第1和第4种。

0x0a base128

github项目:https://github.com/rpuntaie/base128

安装:

git clone https://github.com/rpuntaie/base128
cd base128
python3 setup.py install

另外需要先安装bitarray(在windows里安装麻烦)

pip install bitarray

alphabet:

0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\xb5\xb6\xb7\xbc\xbd\xbe\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff

使用:

#!/usr/bin/env python3
import base128
b128=base128.base128(chars=None, chunksize=7)
c=list(b128.encode(b'pcat.cc'))
m=b''.join(b128.decode(c))
print(c,m)

注意:
chars至少128字节,如果为None,则使用base128.base128.defaultchars
chunksize必须是7的倍数,且小于128。

0x0b BaseHash

BaseHash is a small library for creating reversible obfuscated identifier hashes to a given base and length. The project is based on the GO library, PseudoCrypt by Kevin Burns. The library is extendible to use custom alphabets and other bases.

github项目:https://github.com/calve/python-basehash

安装:

pip install basehash

alphabet:

BASE36 = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
BASE52 = '0123456789BCDFGHJKLMNPQRSTVWXYZbcdfghjklmnpqrstvwxyz'
BASE56 = '23456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz'
BASE58 = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
BASE62 = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
BASE94 = '!"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~'

(跟前面所介绍的相比,base36的alphabet的小写字母变成大写,base62相同。)

使用:

from basehash import *
print base36().decode('PCAT')
print base52().decode('pc4t')
print base56().decode('pcat')
print base58().decode('pcat')
print base62().decode('pcat')
print base94().decode('pcat.cc')

base全家桶的安装使用方法的更多相关文章

  1. 从零开始系列之vue全家桶(3)安装使用vuex

    什么是vuex? vuex:Vue提供的状态管理工具,用于同一管理我们项目中各种数据的交互和重用,存储我们需要用到数据对象. 即data中属性同时有一个或几个组件同时使用,就是data中共用的属性. ...

  2. 从零开始系列之vue全家桶(1)安装前期准备nodejs+cnpm+webpack+vue-cli+vue-router

    写在前面: 什么是全家桶? 包含了vue-router(http://router.vuejs.org),vuex(http://vuex.vuejs.org), vue-resource(https ...

  3. Adobe cc2019全家桶(免破解直接安装版)

    图片来源:Adobe官网 此次整理了Adobe cc2019的全家桶,全部为免破解,直接安装即可使用版本,对一些小白来说,值得推荐. 下载方式:找到下面你需要的Adobe软件,公众号内回复对应的关键词 ...

  4. 2020版Adobe全家桶介绍及免费下载安装

    前言 Adobe公司创建于1982年,是世界领先的数字媒体和在线营销解决方案供应商.公司总部位于美国加利福尼亚州圣何塞.Adobe 的 客户包括世界各地的企业.知识工作者.创意人士和设计者.OEM合作 ...

  5. 使用react全家桶制作博客后台管理系统 网站PWA升级 移动端常见问题处理 循序渐进学.Net Core Web Api开发系列【4】:前端访问WebApi [Abp 源码分析]四、模块配置 [Abp 源码分析]三、依赖注入

    使用react全家桶制作博客后台管理系统   前面的话 笔者在做一个完整的博客上线项目,包括前台.后台.后端接口和服务器配置.本文将详细介绍使用react全家桶制作的博客后台管理系统 概述 该项目是基 ...

  6. 最全总结 | 聊聊 Python 数据处理全家桶(Sqlite篇)

    1. 前言 上篇文章 聊到 Python 处理 Mysql 数据库最常见的两种方式,本篇文章继续说另外一种比较常用的数据库:Sqlite Sqlite 是一种 嵌入式数据库,数据库就是一个文件,体积很 ...

  7. 手把手教你全家桶之React(二)

    前言 上一篇已经讲了一些react的基本配置,本遍接着讲热更新以及react+redux的配置与使用. 热更新 我们在实际开发时,都有用到热更新,在修改代码后,不用每次都重启服务,而是自动更新.并而不 ...

  8. 已配置好的vue全家桶项目router,vuex,api,axios,vue-ls,async/await,less下载即使用

    github 地址: https://github.com/liangfengbo/vue-cli-project 点击进入 vue-cli-project 已构建配置好的vuejs全家桶项目,统一管 ...

  9. 使用vue全家桶制作博客网站

    前面的话 笔者在做一个完整的博客上线项目,包括前台.后台.后端接口和服务器配置.本文将详细介绍使用vue全家桶制作的博客网站 概述 该项目是基于vue全家桶(vue.vue-router.vuex.v ...

随机推荐

  1. Centos7 安装svn步骤(宝塔面板)

    1.运行以下命令安装SVN yum install subversion 2.运行以下命令创建目录 mkdir /var/svn   3.依次运行以下命令创建版本库 cd /var/svn svnad ...

  2. Python问题:error: Microsoft Visual C++ 9.0 is required

    Python问题:error: Microsoft Visual C++ 9.0 is required 原因是缺少编译C的 VCForPython包. 解决办法: 安装VCForPython即可. ...

  3. P5658 括号树

    P5658 括号树 题解 太菜了啥都不会写只能水5分数据 啥都不会写只能翻题解  题解大大我错了 我们手动找一下规律 我们设 w[ i ] 为从根节点到结点 i 对答案的贡献,也就是走到结点 i ,合 ...

  4. dom 加载监听事件 及解析

    document.addEventListener("DOMContentLoaded", function (_event) { console.log("初始DOM ...

  5. Linux -- 如何减少IO过程中的CPU copy

    四种I/O方式的对比 1. Buffered I/O read(file, tmp_buf, len); write(socket, tmp_buf, len); 上下文切换:4次 CPU copy: ...

  6. topcoder srm 633 div1

    problem1 link 如果两个循环之内可以跳完,那么我们只要让这些步数之内的数字组成两个数字$p,q,p\leq q$,使得$p,q,x$组成三角形即可($p+q\geq x,p+x\geq q ...

  7. 如何让在panel里的子窗体随panel的大小改变而变化?(转)

            private void Form1_Load(object sender, EventArgs e)         {             frm=new Form2();   ...

  8. centos7安装配置gitlab详细教程

    一. 安装并配置必要的依赖关系在CentOS系统上安装所需的依赖:ssh,防火墙,postfix(用于邮件通知) ,wget,以下这些命令也会打开系统防火墙中的HTTP和SSH端口访问. 1.安装ss ...

  9. Python扫描器-HTTP协议

    1.HTTP协议 1.1.HTTP协议简介 #1.HTTP协议,全称Hyper Text Transfer Protocol(超文本传输协议) HTTP协议是用于从(WWW:World Wide We ...

  10. MATLAB知识-解决因缺少libsvm 而运行出现Y must be a vector or a character array.

    matlab版本R2014b 最近运行一个使用svmtrain的程序,出现以下错误: 这是因为是在设定路径里面没有libsvm.辛亏有一位师姐的电脑里面有libsvm的包,我直接用了,这样就不需要下载 ...