服务对象与地域限制
PuppyIP 仅面向海外合规企业及其授权人员提供服务,不面向中国大陆地区开放或提供代理服务。本服务仅限用于中国大陆境外的合法业务活动,严禁在中国大陆境内使用本服务。
代理 IP 或服务器位于境外,不改变上述限制。不得通过中转、转接、共享或转售向中国大陆境内的最终使用者提供本服务。使用前请阅读用户服务协议。
本文要点
- md5()、sha1()、sha512() 分别返回 16、20、64 字节的 Bytes,并非十六进制字符串。
- encode_base64() 默认使用标准 Base64 字母表且不补位;u 表示 URL-safe,p 表示用 = 补位,up 同时启用两者。
- encode_base64() 文档范围是请求/响应头 Transform Rules;新哈希函数的套餐、费用、国家、逐账号开放与完整阶段范围没有说明。
- 现有 sha256() 的 Enterprise add-on(企业附加功能)与 Transform Rules rewrite 说明只针对 sha256(),不能直接套用到新函数。
新增函数返回字节,需要文本时再编码
Cloudflare 于 2026 年 11 月 12 日宣布 Rules 新增 md5()、sha1() 和 sha512()。它们接收字符串或字节数组,返回原始字节;接收端要求 Base64 文本时,再组合 encode_base64()。
公告将这些函数用于需要相应算法的系统。函数已被公告列出,并不能证明每个账号和规则执行阶段都已开放;套餐和范围仍需分别确认。
三种函数返回多少字节
md5() 返回 16 字节,sha1() 返回 20 字节,sha512() 返回 64 字节。它们的返回类型都是 Bytes,不是十六进制字符串。
这些长度描述摘要本身。编码成 Base64 后,传输文本的长度和末尾补位会随编码选项变化,不能直接把摘要字节数当作字符串长度。
Base64 默认不补位,u 和 p 各控制什么
encode_base64() 接收 String 或 Bytes,默认使用标准 Base64 字母表且不补位。补位指在末尾添加 =,使输出长度成为 4 的倍数;部分接收系统要求这种格式。
可选的 flags 参数是一段字符串:u 使用 URL-safe 字母表,以 - 和 _ 代替 + 和 /;p 添加 = 补位;up 同时启用两者。字母表和补位改变文本表示,不改变前一步选择的哈希算法。
如何组合表达式,哪些规则可用
默认标准字母表、不补位:encode_base64(sha512("hello world"))。
使用标准字母表并补位:encode_base64(sha512("hello world"), "p")。使用 URL-safe 字母表并补位:encode_base64(sha512("hello world"), "up")。
这些只是表达式示例,未在真实账号中执行。Cloudflare 的函数参考明确限定 encode_base64() 只能用于请求/响应头 Transform Rules;该限制不能代替新哈希函数在所有产品和执行阶段的完整支持清单。
调整规则前核对格式和账号条件
先与接收端核对输入字节、哈希算法、输出编码、字母表和补位要求。按它的精确约定,用非敏感样例比较结果,再决定是否调整实际配置。
这则公告及新函数条目没有写明具体套餐、额外费用、国家覆盖、逐账号开放情况或完整的执行阶段支持范围。应在当前账号和官方说明中确认要用的函数及规则类型。
既有 sha256() 条目注明它需要 Enterprise add-on(企业附加功能)及特定开通权限,并限于 Transform Rules 的 rewrite 表达式。这些是 sha256() 专属说明,不能据此推定 md5()、sha1() 和 sha512() 的权限或范围。
资料来源
常见问题
目标协议要十六进制字符串时,可以直接用 Base64 替代吗?
不可以把两种文本格式当作相同值。encode_base64() 产生的是 Base64 表示;本指南引用的条目没有说明十六进制转换方式。应按 Cloudflare 支持的函数和接收端协议另行确认,不要直接替换成 Base64。
u 标志还会对 URL 做百分号编码吗?
不会。文档中的 u 只选择 URL-safe Base64 字母表,以 - 和 _ 替代 + 和 /,不是对 URL 做百分号编码。若把结果放进 URL,仍需分别确认外层 URL 的语法要求。