python - 多次散列加盐字符串(自定义密码散列)
问题描述
我需要将旧的 Python 2 代码移植到 Python 3,我想我搞砸了字符串编码。
这是一个自定义密码哈希。
我尝试了不同的方法,但没有成功,只获得错误或错误的结果。
这是需要与 Python 3 一起使用的 Python 2 代码:
from hashlib import sha256
from base64 import b64encode
# 32 characters length string
SALT = "SQ7HqXQhrOIPEALbI7QhVjZ3DHJGhK18"
PLAIN_PASSWORD = "PLAIN_PASSWORD"
SALTED_PASSWORD = "%s{%s}" % (PLAIN_PASSWORD, SALT)
digest = ""
for i in range(100):
digest = sha256(digest + SALTED_PASSWORD).digest()
print b64encode(digest)
输出:
Yb0W9H+R7xQDStPfBjKMjFbe05jDPK6OXrdhVWCDJrU=
解决方案
从头开始操作字节:
SALTED_PASSWORD = ("%s{%s}" % (PLAIN_PASSWORD, SALT)).encode()
digest = b""
for i in range(100):
digest = sha256(digest + SALTED_PASSWORD).digest()
print(b64encode(digest).decode())
# Yb0W9H+R7xQDStPfBjKMjFbe05jDPK6OXrdhVWCDJrU=
推荐阅读
- android - 拒绝来电后,Android 上的 Chrome 会切换音频输出
- python - Python - XLRDError:不支持的格式,或损坏的文件:预期的 BOF 记录
- node.js - 如何通过请求主机名与 http-proxy-middleware 和 express 设置代理?
- angular - 如何禁用输入字段以防止在角度 4 中进行编辑
- android - firebase实时数据库写入数据错误:firebase中的值不同
- google-cloud-platform - 如何将 Google Cloud Identity 与经典用户名/密码授权集成?
- c++ - OpenGL/C++ 中“2D”相机的移动
- javascript - 字段为空时如何动态更改数组字段的值
- node.js - 无效的架构配置:[OBject Object] 不是数组中的有效类型
- javascript - 是否可以在不重复所述值的情况下从三元运算返回比较值 + 字符串?