python - python中sha256时随机十六进制字符串得到'none'
问题描述
你能帮我理解这么简单的问题吗?我需要生成一系列我正在使用的随机十六进制字符串:
import secrets
x = secrets.token_hex(32)
这给了我这样的东西:
d6d09acbe78c269147803b8c351214a6e5f39093ca315c47e1126360d0df5369
这完全没问题。现在我需要通过我正在使用的 SHA256 哈希来传递它:
h = hashlib.new('sha256')
print (h.update(x))
得到错误:
TypeError: Unicode-objects must be encoded before hashing
我读到我需要在使用 .encode() 传递哈希之前对字符串进行编码,从而获得一个完全奇怪的结果:
b'd6d09acbe78c269147803b8c351214a6e5f39093ca315c47e1126360d0df5369'
, 和一个 'none' 结果作为散列。
你能告诉我这里发生了什么吗?
非常感谢绅士。
解决方案
您正在尝试打印 h.update() 的输出,该输出将为 None,因为它不返回任何内容。而是使用
h.update(x.encode())
print(h.hexdigest())
打印出一个哈希字符串。
推荐阅读
- matlab - 为什么用空单元构建 MATLAB 结构对象会创建一个空结构?
- primeng - 带有 filterMatchMode 的 PrimeNG 下拉菜单
- java - 增量稀疏矩阵
- robotframework - 在机器人框架中设置页面加载超时
- ios - 检测 iphone 是刘海屏还是普通矩形屏以避免导航栏大小问题?
- java - 贪心算法 - 没主意
- ruby-on-rails - 在 Rails 模型范围内强制执行特定顺序
- javascript - 在 Angular 中动态传递接口作为参数
- python - 直接从 SFTP 服务器将音频文件加载到 Python 的语音识别模块(使用 Paramiko SFTPClient)
- css - 不会在 IE 上执行的 CSS