首页 > 解决方案 > 多次散列加盐字符串(自定义密码散列)

问题描述

我需要将旧的 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=

标签: pythonpython-3.xencodinghashpython-2to3

解决方案


从头开始操作字节:

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=

推荐阅读