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_base2 对 1 的结果是 00110001,因为 1 的 ASCII 值是 49,而 49 的二进制格式是 00110001。并且不要忘记,encode_base2 的输出是字符串,而不是二进制数字。
decode_base2
syntax: raw, err = decode_base2(encoded)
将 base2 格式字符串解码为其原始值。如果给定的字符串不是有效的 base2 编码,raw 将为 nil,err 将为 "invalid input"。输入字符串中任何不是 1 的字符将被视为 0。例如,aa11aaa1 等于 00110001。没有 RFC 要求我们将不在 0 和 1 中的字符视为无效输入,并且检查字符是否为 '0' 会使性能降低 50%。
encode_base16
syntax: encoded = encode_base16(raw[, out_in_lowercase])
将给定字符串编码为 base16 格式(即十六进制格式)。此方法在其他语言中可能被称为 to_hex 或 encodeHex。默认输出字母为 [0-9A-F]。如果您将 out_in_lowercase 指定为 true,输出将为 [0-9a-f]。
decode_base16
syntax: raw, err = decode_base16(encoded)
将 base16 格式(即十六进制格式)字符串解码为其原始值。此方法在其他语言中可能被称为 from_hex 或 decodeHex。如果给定的字符串不是有效的 base16 编码,raw 将为 nil,err 将为 "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 将为 nil,err 将为 "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 将为 nil,err 将为 "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 将为 nil,err 将为 "invalid input"。
GitHub
您可以在 nginx-module-base-encoding 的 GitHub 仓库 中找到此模块的其他配置提示和文档。