base64 编码是否保留字母顺序?

Bar*_*ift 4 sorting base64 encoding

假设我有一个按字母顺序排列的 100 个单词的列表。如果我对这些单词进行 base64 编码,然后再次对结果列表进行排序,如果元素相同,顺序是否相同?

如果没有,是否还有其他编码算法可以为我提供这种行为?

Ale*_*son 10

不,base64 不保留未编码字符串的排序顺序。

RFC 4648 中对此进行了解释,它还定义了一种名为 base32hex 的编码,它特别保证它保持排序顺序。

如果您想坚持使用官方标准,base32hex 是我所知的最佳选择。

不过,如果编码的空间效率很重要,那么从 Base64 降到 Base32 就有点令人失望了。如果是这种情况,您始终可以创建自己的编码(这并不那么难)或采用其他人的编码(JavaScript 示例: https: //github.com/dominictarr/d64)。

  • [uuencode](https://en.wikipedia.org/wiki/Uuencoding) 是保留排序顺序的现有标准,因为它仅使用从 <space> 到 _ 的 64 个连续字符来对数据进行编码。 (2认同)