4 个版本
0.1.3 | 2020 年 6 月 4 日 |
---|---|
0.1.2 | 2020 年 1 月 28 日 |
0.1.1 | 2020 年 1 月 28 日 |
0.1.0 | 2020 年 1 月 28 日 |
#18 in #排列
11KB
177 行
baseperm
一个用于生成 baseN 码字母字符串有效排列的小工具。
操作理论
许多流行的二进制到可打印序列化/编码方案使用其字母的位数不允许 8 位字节均匀地放入一个符号(或多个符号)中
因此,这些编码采用了填充方案,以便将它们的输出舍入到 8 位的倍数。
baseperm
通过在这些编码中操作填充位来产生不同的、有效的编码形式,这些形式解码为相同的输入。
为什么?
程序员经常犯的一个错误是假设编码表示与它们的输入有一对一的对应关系。这会导致各种有趣、可能可利用的错误
-
由于对序列化形式的依赖而绕过速率限制
-
去重和复用绕过
-
强制字典冲突
安装
baseperm
是一个单独的命令行程序。您可以使用 cargo
安装它
cargo install baseperm
或者本地构建它
git clone https://github.com/woodruffw/baseperm && cd baseperm
cargo build
用法
baseperm
从 stdin
读取排列候选者,并将所有排列等价形式写入 stdout
,每行一个。原始输入也包含在输出中,默认为 (RFC4648) base64。
echo "hello!" | base64 | baseperm
可以使用 -e
,--encoding
指定其他编码。
echo "hello!" | base32 | baseperm -e base32
有关支持编码的完整列表,请参阅 baseperm -h
。
依赖项
~3MB
~59K SLoC