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. EXCEL技巧-多级目录设置

    现有如下图所示的数据,要求:以方法.厚度.品种进行分类汇总,并对数量.面积.金额求和. 在进行分类汇总前需要先对数据进行排序,操作如下图所示. 在排序对话框中,点击“添加条件” 两次,这样可以对三个字 ...

  2. html中第一行是什么意思

    html中第一行是什么意思 一.总结 一句话总结: 告诉浏览器,让浏览器得知自己要处理的内容时html 二.html中第一行是什么意思 转自或参考:HTML文件第一行是什么东东_百度知道https:/ ...

  3. 阿里云服务器配置https(总结)

    阿里云服务器配置https(总结) 一.总结 一句话总结: 1.下载https证书(可以在阿里云上) 2.在服务器上面开启443端口 3.配置apache服务器,443的加ssl,让80的重定向到44 ...

  4. PHP中定义常量的区别,define() 与 const

      正文 在PHP5.3中,有两种方法可以定义常量: 使用const关键字 使用define()方法 const FOO = 'BAR'; define('FOO','BAR'); 这两种方式的根本区 ...

  5. php 验证中文和部分自定义符号

    $str = '54787dDp中s-:"'; $rule ="/^[\x{4e00}-\x{9fa5}A-Za-z0-9`·!!@#$\¥%…^&*(())\-+=“.\ ...

  6. opencv常见示例

    1.批量转换灰度图并保存 #include <iostream> #include <opencv2/opencv.hpp> #include <string> u ...

  7. PHP 美化输出数组

    var_export — 输出或返回一个变量的字符串表示 此函数返回关于传递给该函数的变量的结构信息,它和 var_dump() 类似,不同的是其返回的表示是合法的 PHP 代码. 您可以通过将函数的 ...

  8. vue页面刷新重定向

    在App.vue中,添加如下代码: created(){ if(this.$router.path !== '/RealTimeMonitoring'){ this.$router.replace(' ...

  9. 39 Flutter仿京东商城项目 收货地址列表、增加 修改收货地址布局、弹出省市区选择器

    加群452892873 下载对应39课文件,运行方法,建好项目,直接替换lib目录 pubspec.yaml city_pickers: ^ AddressAdd.dart import 'packa ...

  10. 雨田家园 delphi 拆分字符串

    最近在使用Delphi开发一种应用系统的集成开发环境.其中需要实现一个字符串拆分功能,方法基本原型应该是:procedure SplitString(src: string ; ch: Char; v ...