python2.7 环境,调用 base64.b64decode()方法进行解析,下面两个字符串(区别在于字符串开始有没有下划线)解析出来的内容一致,求教这是怎么回事....
result1 = base64.b64decode('_Y62pWdlMDnkQMUYjYOUkVQ==')
result2 = base64.b64decode('Y62pWdlMDnkQMUYjYOUkVQ==')
result = result1 == result2 # result: True
1
binux 2018-09-11 12:13:33 +08:00 1
下划线又不是 64 个字符集里的,就给忽略了吧
|
2
itskingname 2018-09-11 12:15:34 +08:00
我用 macOS 的命令解压出来是不一样的。
``` $ echo "_Y62pWdlMDnkQMUYjYOUkVQ==" | base64 --decode �ge09�@�����T% $ echo "Y62pWdlMDnkQMUYjYOUkVQ==" | base64 --decode c��Y�Ly1F#`�$U% ``` |
3
itskingname 2018-09-11 12:18:33 +08:00 1
base64 的 64 是指 10 个数字 + 26 个小写字母 + 26 个大写字母 + 斜杠 + 加号 再附加一个等号作为凑数的符号。一个 64 个有效符合加 1 个凑数符号。所以是没有下划线的。
|
4
dacapoday 2018-09-11 13:16:44 +08:00 1
@itskingname ubuntu 下,同样命令,含下划线的直接报错:base64: invalid input
|
5
virusdefender 2018-09-11 14:30:29 +08:00 1
一楼正解,下划线给忽略了
|
6
annielong 2018-09-11 14:58:30 +08:00 1
标准 base64 没有下划线和问号,因为这个 url 里面传 base64 踩了大坑,
|
7
JHerschel 2018-09-11 16:40:08 +08:00 1
https://github.com/python/cpython/blob/master/Modules/binascii.c
468 - 470 行。 如果 ascii 字符大于 0x7f 的话,就忽略它了。 |