用于创建任意二进制编码的库。包括 base32、base64、base85 等的变体。
项目描述
基于py的
用于创建任意二进制编码的库。包括 base32、base64、base85 等的变体。
警告:虽然这些编码确实可以端到端工作,但它们与传统实现不兼容!
我正在努力找出原因。
编码
类型
- 滑动:随机访问按位实现,理论上兼容任意大小的字节串。
- BigInt:将字节转换为大整数,然后以基数递增。与大文件不兼容。适用于散列和较短的字节串。
- Biterator:遍历输入流中的每个字节并将其添加到缓冲区,然后提取所需的位数以转换为其他基数。大致基于 CPython 的 base64 编码器,但经过大量修改以启用任意转换。在制品。
可用编码
| ID | 类型 | 位/字符 | 字符/字节 | 字母 |
|---|---|---|---|---|
| base32 | 咬合器 | 5 | 5 | ABCDEFGHIJKLMNOPQRSTUVWXYZ234567 |
| base32hex | 咬合器 | 5 | 5 | 0123456789ABCDEFGHIJKLMNOPQRSTUV |
| base46 | 大整数 | 不适用 | 不适用 | ABCDEFGHJKMNPQRSTUVWXYZabcdefghjkmnpqrstuvwxyz |
| base62 | 大整数 | 不适用 | 不适用 | 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz |
| base64 | 咬合器 | 6 | 3 | ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ |
| base64b64 | 咬合器 | 6 | 3 | ./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz |
| base64bash | 咬合器 | 6 | 3 | 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@_ |
| base64bcrypt | 咬合器 | 6 | 3 | ./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 |
| base64hqx | 咬合器 | 6 | 3 | !"#$%&'()*+,-012345689@ABCDEFGHIJKLMNPQRSTUVXYZ[`abcdefhijklmpqr |
| base64url | 咬合器 | 6 | 3 | ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_ |
| base64uu | 咬合器 | 6 | 3 | !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ |
| base64xx | 咬合器 | 6 | 3 | +-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz |
| 基地85 | 咬合器 | 7 | 7 | ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!#$%&()*+-;<=>?@^_`{|}~ |
| base94 | 大整数 | 不适用 | 不适用 | !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ |
| 克罗克福德32 | 咬合器 | 5 | 5 | 0123456789ABCDEFGHJKMNPQRSTVWXYZ |
| 地理哈希32 | 咬合器 | 5 | 5 | 0123456789bcdefghjkmnpqrstuvwxyz |
| 任天堂32 | 咬合器 | 5 | 5 | 0123456789BCDFGHJKLMNPQRSTVWXYZ? |
| wordsafe32 | 咬合器 | 5 | 5 | 23456789CFGHJMPQRVWXcfghjmpqrvwx |
| zbase32 | 咬合器 | 5 | 5 | ybndrfg8ejkmcpqxot1uwisza345h769 |
地位
| 标准 | 编码 | 解码 | 通过测试 |
|---|---|---|---|
| base32 | JBSWY3DPFQQHO33SNRSCC=== | b'Hello, world!' | ✔ |
| base32hex | 91IMOR3F5GG7ERRIDHI22=== | b'Hello, world!' | ✔ |
| base46 | GnNaagudEKYvFzFrZSS | b'Hello, world!' | ✔ |
| base62 | 1wJfrzvdbthTq5ANZB | b'Hello, world!' | ✔ |
| base64 | SGVsbG8sIHdvcmxkIQ== | b'Hello, world!' | ✔ |
| base64b64 | G4JgP4wg65RjQalY6E== | b'Hello, world!' | ✔ |
| base64bash | i6lIr6YI87tLsCNA8g== | b'Hello, world!' | ✔ |
| base64bcrypt | QETqZE6qGFbtakviGO== | b'Hello, world!' | ✔ |
| base64hqx | 5'9XE'mX)(G[FQaN)3== | b'Hello, world!' | ✔ |
| base64url | SGVsbG8sIHdvcmxkIQ== | b'Hello, world!' | ✔ |
| base64uu | 2&5L;&\\L('=O<FQD(0 | b'Hello, world!' | ✔ |
| base64xx | G4JgP4wg65RjQalY6E== | b'Hello, world!' | ✔ |
| 基地85 | 呃 | 呃 | ❌ |
| base94 | /P\|?l:+>Nq\\sr<+r | b'Hello, world!' | ✔ |
| 克罗克福德32 | 91JPRV3F5GG7EVVJDHJ22 | b'Hello, world!' | ✔ |
| 地理哈希32 | 91kqsv3g5hh7fvvkejk22 | b'Hello, world!' | ✔ |
| 任天堂32 | 91LQSW3H5JJ7GWWLFKL22 | b'Hello, world!' | ✔ |
| wordsafe32 | F3Wgjq5Q7RR9PqqWMVW44 | b'Hello, world!' | ✔ |
| zbase32 | jb1sa5dxfoo8q551pt1nn | b'Hello, world!' | ✔ |
base85: c = 99, len = 85, bpc = 7
入门
$ pip install pybased
做事
# Lets's assume we want to use the Crockford32 encoding scheme.
from based.standards.base32 import crockford32
# And let's assume the variable data has what we want to encode.
data: bytes = ...
# Encode to string.
encoded: str = crockford32.encode_bytes(data)
# ...
# Decode the string back to bytes.
data: bytes = crockford32.decode_bytes(encoded)
based命令行工具
$ based --help
usage: based [-h] {dump,encode,decode} ...
positional arguments:
{dump,encode,decode}
optional arguments:
-h, --help show this help message and exit
注意: CLIbased工具目前仅用于测试,并且正在非常活跃的开发中。
将字符串编码为 Base94
$ based encode --standard=base94 --input-string 'Hello, world!'
/P|?l:+>Nq\sr<+r
将字符串编码为 Base94 并输出 JSON
$ based encode --standard=base94 --input-string 'Hello, world!' --output-format json
{"encoded": "/P|?l:+>Nq\\sr<+r"}
从 Base94 解码数据
$ based decode --standard=base94 --input-string '/P|?l:+>Nq\sr<+r'
>>> input chars: 16B
Bytes representation: b'Hello, world!'
Hex representation: 48656c6c6f2c20776f726c6421
各种输出编码格式
$ based decode --standard=base94 --input-string '/P|?l:+>Nq\sr<+r' --output-format json
>>> input chars: 16B
{"b64": "SGVsbG8sIHdvcmxkIQ==", "utf-8": "Hello, world!"}
$ based decode --standard=base94 --input-string '/P|?l:+>Nq\sr<+r' --output-format yaml
>>> input chars: 16B
encoded: !!binary |
SGVsbG8sIHdvcmxkIQ==
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
pybased-0.0.2.tar.gz
(16.6 kB
查看哈希)
内置分布
pybased-0.0.2-py3-none-any.whl
(20.3 kB
查看哈希)