跳转至

base-encoding: 更快的 base64 编码替代方案,并为 nginx-module-lua 应用提供缺失的基本编码

安装

如果您尚未设置 RPM 仓库订阅,请 注册。然后您可以继续以下步骤。

CentOS/RHEL 7 或 Amazon Linux 2

yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install lua-resty-base-encoding

CentOS/RHEL 8+、Fedora Linux、Amazon Linux 2023

dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install lua5.1-resty-base-encoding

要在 NGINX 中使用此 Lua 库,请确保已安装 nginx-module-lua

本文档描述了 lua-resty-base-encoding v1.3.0,于 2018 年 7 月 21 日发布。


encode_base2

syntax: encoded = encode_base2(raw)

将给定字符串编码为 base2 格式(即二进制格式)。请注意,输入是字符串。因此,encode_base21 的结果是 00110001,因为 1 的 ASCII 值是 49,而 49 的二进制格式是 00110001。并且不要忘记,encode_base2 的输出是字符串,而不是二进制数字。

decode_base2

syntax: raw, err = decode_base2(encoded)

将 base2 格式字符串解码为其原始值。如果给定的字符串不是有效的 base2 编码,raw 将为 nilerr 将为 "invalid input"。输入字符串中任何不是 1 的字符将被视为 0。例如,aa11aaa1 等于 00110001。没有 RFC 要求我们将不在 01 中的字符视为无效输入,并且检查字符是否为 '0' 会使性能降低 50%。

encode_base16

syntax: encoded = encode_base16(raw[, out_in_lowercase])

将给定字符串编码为 base16 格式(即十六进制格式)。此方法在其他语言中可能被称为 to_hexencodeHex。默认输出字母为 [0-9A-F]。如果您将 out_in_lowercase 指定为 true,输出将为 [0-9a-f]

decode_base16

syntax: raw, err = decode_base16(encoded)

将 base16 格式(即十六进制格式)字符串解码为其原始值。此方法在其他语言中可能被称为 from_hexdecodeHex。如果给定的字符串不是有效的 base16 编码,raw 将为 nilerr 将为 "invalid input"[0-9a-fA-F] 中的字母被视为有效。

encode_base32

syntax: encoded = encode_base32(raw[, no_padding])

将给定字符串编码为 base32 格式,带或不带填充 '='。no_padding 的默认值为 false。

decode_base32

syntax: raw, err = decode_base32(encoded)

将 base32 格式字符串解码为其原始值。如果给定的字符串不是有效的 base32 编码,raw 将为 nilerr 将为 "invalid input"

encode_base32hex

syntax: encoded = encode_base32hex(raw[, no_padding])

将给定字符串编码为 base32hex 格式,带或不带填充 '='。no_padding 的默认值为 false。有关 base32hex 格式的更多信息,请参见 https://tools.ietf.org/html/rfc4648#section-7

decode_base32hex

syntax: raw, err = decode_base32(encoded)

将 base32hex 格式字符串解码为其原始值。如果给定的字符串不是有效的 base32hex 编码,raw 将为 nilerr 将为 "invalid input"。有关 base32hex 格式的更多信息,请参见 https://tools.ietf.org/html/rfc4648#section-7

encode_base64

decode_base64

encode_base64url

decode_base64url

作为 lua-resty-core 官方实现的替代方案。请阅读他们的官方文档。编码方法比官方实现快 40%,解码方法快 200%。请注意,该实现依赖于字节序和架构。有关更多信息,请阅读“必读”部分。

encode_base85

syntax: encoded = encode_base85(raw)

将给定字符串编码为 base85 格式,带或不带填充 '='。请注意,没有标准,但有太多所谓的 base85 变体。该模块的实现应与 Go 的 encoding/ascii85 模块兼容(不是在 API 参数级别,而是在编码/解码规则级别)。

decode_base85

syntax: raw, err = decode_base85(encoded)

将 base85 格式字符串解码为其原始值。如果给定的字符串不是有效的 base85 编码,raw 将为 nilerr 将为 "invalid input"

GitHub

您可以在 nginx-module-base-encoding 的 GitHub 仓库 中找到此模块的其他配置提示和文档。