多次对咸味字符串进行哈希处理(自定义密码哈希)。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多次对咸味字符串进行哈希处理(自定义密码哈希)。相关的知识,希望对你有一定的参考价值。

我需要将旧的Python 2代码移植到Python 3中,我想我的字符串编码出了问题。

这是一个自定义的密码散列器。

我尝试了不同的方法,都不成功,只得到错误或错误的结果。

这是Python 2的代码,它需要与Python 3一起工作。

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=
另一答案
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))

以上是关于多次对咸味字符串进行哈希处理(自定义密码哈希)。的主要内容,如果未能解决你的问题,请参考以下文章

PHP PDO如何在注册时对密码进行哈希处理,然后在登录时“取消哈希”

为啥在 AWS Redshift 中对密码进行 md5 哈希处理时密码身份验证失败?

尝试在异步函数中使用 bcrypt 对密码进行哈希处理

如何修复 TypeError:在使用 bcryptjs 对 GraphQL 突变进行哈希密码期间无法读取未定义的属性“哈希”?

使用 dcrypt 对密码进行哈希处理后,使用 MySQL 中的 NodeJs 登录用户

使用 Spring Security BCryptPasswordEncoder 对密码进行哈希处理时凭据错误