Python base32解码结果不同



这个问题听起来可能很愚蠢,但它已经困扰了我好几天了。

基本上,我使用base64_b32decode()来解码python中的base32(RFC3548/RFC4648(密钥。

结果是b'x07xe7xabNxe9x15kxb9x1eCx0eRx1axd3xcdxb09` F'

然而,当我使用这个网站解码密钥。

网站的结果是07 e7 ab 4e e9 15 6b b9 1e 43 0e 52 1a d3 cd b0 39 60 20 46

问题是,我不知道为什么当网站显示"ab"时,python会返回"abN"。注意字符串中的附加N

我的意思是。。。为什么python返回了额外的字符,而且在我看来仍然缺少b0 39 60 20 46字节。

我做错什么了吗?

Python代码:

import base64
key = "A7T2WTXJCVV3SHSDBZJBVU6NWA4WAICG"
print(base64.b32decode(key))

这些字符串是相同的。ASCII字符N的值是0x4E,并且(0x39 0x60 0x20 0x46(的最后一个是"0";9〃"空间"空间"F";。当Python打印一个字节字符串时,它会将所有正常字符打印为正常字符,而不可打印的字符则显示为十六进制转义符。使用

import codecs
print(codecs.encode(bstr,'hex'))

看看。binascii模块还具有转换为十六进制字符串的方法。

N出现在此处:

ab   4e e9   # website
xab N  xe9 # python

并且仅由不同的输出格式引起。十六进制代码4E属于ASCII字母N

最新更新