Base64URL 对 Base64 标准进行了修改,目的是能够将编码结果用作文件名或 URL 地址。
Base64 存在以下问题:
- 使用
+
作为第 62 个字符,使用=
作为填充字符。这两个字符在 URL 中都有特殊含义,+
是空格,=
用于通过查询字符串作为键=值
发送数据; - 使用
/
作为第 63 个字符,/
在 URL 和文件系统中都用作分隔符。
为了解决以上问题,Base64URL 应运而生,Base64URL 采用了和 Base64 一样的算法作为主要标准,在以下几个方面做了稍许调整:
- 将
+
替换成了-
- 将
/
替换成了_
- 不再需要填充字符
- 禁止行分隔符
具体的操作流程:
编码:
- 使用 Base64 编码
- 去除尾部
=
- 将
+
替换成-
,将/
替换成_
解码:
- 将
-
替换成+
,将_
替换成/
- 计算
编码长度 % 4
- 结果为
0
则不处理 - 结果为
2
则在字符串尾部添加==
- 结果为
3
则在字符串尾部添加=
- 结果为
- 使用 Base64 解码
网友评论