首页 > 解决方案 > Python base32解码结果不同

问题描述

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

基本上,我曾经base64_b32decode()在 python 中解码 base32 (RFC 3548 / RFC4648) 密钥。

结果是b'\x07\xe7\xabN\xe9\x15k\xb9\x1eC\x0eR\x1a\xd3\xcd\xb09` F'

但是,当我使用这个网站来解码密钥时。

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

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

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

难道我做错了什么?

蟒蛇代码:

import base64

key = "A7T2WTXJCVV3SHSDBZJBVU6NWA4WAICG"

print(base64.b32decode(key))

标签: python

解决方案


这些字符串是相同的。ASCII 字符 N 的值为 0x4E,最后一个 for (0x39 0x60 0x20 0x46) 是“9”“空格”“空格”“F”。当 Python 打印一个字节字符串时,它会将所有普通字符打印为普通字符,而不可打印的字符则显示为十六进制转义符。利用

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

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


推荐阅读