python - 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))
解决方案
这些字符串是相同的。ASCII 字符 N 的值为 0x4E,最后一个 for (0x39 0x60 0x20 0x46) 是“9”“空格”“空格”“F”。当 Python 打印一个字节字符串时,它会将所有普通字符打印为普通字符,而不可打印的字符则显示为十六进制转义符。利用
import codecs
print(codecs.encode(bstr,'hex'))
看到那个。该binascii
模块还具有转换为十六进制字符串的方法。
推荐阅读
- apache - 将所有特定 url 重定向到上一个文件夹
- wordpress - 如何在联系表格7中的两列之间添加空格
- java - 修复此 appium 错误:“会话已终止或未启动”
- c# - 如何根据 EF DbInitializer 中前一个对象中设置的 id 使用 linq 设置 Id 属性
- android - Android 音频流 - 在 AudioTrack 上获取静态噪声
- c# - DropDownList.SelectedValue 未生效
- python - 尝试对 8x8 矩阵进行形态变换时出错
- gnuplot - 如何用 GNUPLOT 表示 3D 函数的散点
- cplex - 我们如何在 OPL 中以编程方式检索 CP Optimizer 的软件版本号?
- unity3d - Unity3D 复制的 NavMesh 代理不移动