【问题标题】:Hashing salted string multiple times (custom password hashing)多次散列加盐字符串(自定义密码散列)
【发布时间】:2020-05-01 15:24:57
【问题描述】:

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

【问题讨论】:

  • 我没有看到任何 python 3 代码。

标签: python python-3.x encoding hash python-2to3


【解决方案1】:

从头开始操作字节:

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=

【讨论】:

    【解决方案2】:
    from hashlib import sha256
    from base64 import b64encode
    
    # 32 characters length string
    SALT = b"SQ7HqXQhrOIPEALbI7QhVjZ3DHJGhK18"
    PLAIN_PASSWORD = b"PLAIN_PASSWORD"
    SALTED_PASSWORD = b"%s{%s}" % (PLAIN_PASSWORD, SALT)
    
    digest = b""
    for i in range(100):
        digest = sha256(digest + SALTED_PASSWORD).digest()
    
    print(b64encode(digest))
    

    【讨论】:

      猜你喜欢
      • 2015-02-17
      • 2011-10-29
      • 2015-08-20
      • 1970-01-01
      • 1970-01-01
      • 2011-06-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多