首页 > 解决方案 > “词法排序”base64 的定义是什么,为什么 RFCC-1940 显然是规范参考?

问题描述

今天我正在阅读 Netty 的Base64Dialect类的文档。

它包括一种称为 的方言ORDERED,它说的有点简短:

RFC1940 中描述的 Base64 的特殊“有序”方言。

切入正题,我找不到任何关于这是什么的定义,并且包含一个似乎在整个互联网上复制的错误参考。

而不是RFC-1940,该文档实际上链接到RFCC-1940,这显然是“读者评论”,并且是无意义的:

RFC 920:whkpiy clujzis brkyh dwojfmz jydwq hrnwcgklt fsltaiu

评论者 lsnxkrjo sxavymwpg

2006 年 10 月 26 日提交

相关 RFC:RFC-920

现在RFC-920似乎与 base 64 无关:

域要求

本备忘录重申并细化了建立域的要求,首先在RFC-881中描述。它为该讨论增加了相当多的细节,并介绍了有限的顶级域集。

RFC-1940是否相关?略读,不,我在这里看不到任何 base 64 编码定义:

源需求路由:数据包格式和转发规范(第 1 版)。

SDRP 的目的是支持源发起的路由选择,以补充现有路由协议为域间和域内路由提供的路由选择。[...]

事实上,在网上搜索“rfcc 1940 ordered base64”可以在许多其他文档中找到相同的 URL,但遗憾的是没有解释“lexically ordered base 64”。

在任何地方都有这个的合法定义吗?为什么没有其他人注意到这个 URL 指的是胡说八道?

标签: javabase64nettyrfc

解决方案


我还没有找到有序 Base64 的“合法定义”。(在撰写本文时,它甚至没有在Base64的维基百科页面中提及。)

如果您将代码视为规范(!),有序 Base64 是一种变体,其中字母表已重新排序为 ASCII 升序。这意味着有序 Base64 的自然排序与相应字节序列的自然排序相同。


没有订购 Base64 的规范是否有问题?

可能不是。

  • 实际上,“指定”Base64(和 Base32 / Base16)的不同变体的 RFC 实际上更多的是试图描述变体而不是指定它们。这同样适用于维基百科的文章。

  • 据我所知(谷歌搜索),很少使用有序的 Base64 变体。

  • 引入有序变体的 Base64实现是遗留代码。(在过去的 8 年里没有改变)。需要 Base64 编码/解码能力的新 Java 代码应该使用java.util.Base64Java 8 中引入的标准 Java 类。

但令人担忧的是,您链接到的 javadocs(和其他人!)都指的是一个无意义的页面。该页面可能在某些时候有合法的描述,但看起来它已被破坏。


推荐阅读