当我尝试再次将 YouTube 网址编码为 base64 时,= 后面的值除了前两个字母外没有变化。这已经是 base64 格式了吗?网址转换后:http://www.youtube.com/watch?v=CvUN8qg9lsk
输出(b64):http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DCvUN8qg9lsk
为什么它们相同?
答案1
当我再次尝试将 YouTube URL 编码为 base64 时,除了前两个字母外,符号后的值
=
没有变化。最后一部分已经是 base64 了吗?
减去=
被转换成的符号%3D
,是的,CvUN8qg9lsk
已经用Base64编码了。
为什么它们一样呢?
正如@LPChip 指出的那样,您使用的函数是一个 URL 编码器,它仅将 URL 中的特殊字符(:
、、和)转换为它们的十六进制等效字符(而不是普通字母)。/
?
+
=
Base64 也包括其他编码,对吗?
虽然 URL 编码被认为是 Base64 编码的一种形式,但值得注意的是,该术语可能含义过重。维基百科(强调添加):
“Base64 是一种一组类似的二进制到文本编码方案通过将二进制数据转换为基数 64 表示形式来表示 ASCII 字符串格式的二进制数据。”
简而言之,base64
您使用的函数不用于编码/解码CvUN8qg9lsk
。
顺便提一下,如果您添加=
(填充)并尝试CvUN8qg9lsk=
使用“普通”Base64 编码器/解码器进行翻译,这可能会奏效。话虽如此,您不太可能得到任何有价值的东西(即对人类有意义的东西)。YouTube 用于获取其 ID 的值很可能是一种非常特殊的算法的产物,该算法可能与 Google/YouTube 之外的任何东西都无关。