gpt4 book ai didi

security - 使用 PBKDF2 作为密码哈希是否有标准?

转载 作者:行者123 更新时间:2023-12-02 19:05:17 27 4
gpt4 key购买 nike

和我一起对抗弱密码哈希。

PBKDF2 密码哈希应包含盐、迭代次数和哈希本身,以便稍后进行验证。 PBKDF2 密码哈希是否有标准格式,例如 RFC2307 的 {SSHA}? BCRYPT 很棒,但 PBKDF2 更容易实现。

显然,没有规范。这是我的规范。

>>> from base64 import urlsafe_b64encode
>>> password = u"hashy the \N{SNOWMAN}"
>>> salt = urlsafe_b64decode('s8MHhEQ78sM=')
>>> encoded = pbkdf2_hash(password, salt=salt)
>>> encoded
'{PBKDF2}1000$s8MHhEQ78sM=$hcKhCiW13OVhmLrbagdY-RwJvkA='

更新:http://www.dlitz.net/software/python-pbkdf2/定义crypt() 替换。我更新了我的小规范以匹配他的,除了他以 $p5k2$ 开头而不是 {PBKDF2} 开头。 (我需要从其他 LDAP 样式 {SCHEMES} 迁移出去)。

这是{PBKDF2},小写十六进制的迭代次数,$urlsafe_base64编码的盐,$ code> 和 urlsafe_base64 编码的 PBKDF2 输出。 salt 应为 64 位,迭代次数应至少为 1000,并且具有 HMAC-SHA1 输出的 PBKDF2 可以是任意长度。在我的实现中,默认情况下它始终为 20 个字节(SHA-1 哈希的长度)。

密码在通过 PBKDF2 发送之前必须编码为 utf-8。没有关于是否应该将其标准化为 Unicode NFC 的消息。

此方案的暴力破解成本应比 {SSHA} 高出 迭代 倍左右。

最佳答案

PBKDF2 的参数(盐和迭代)有一个规范,但它不包括哈希值。这包含在 PKCS #5 version 2.0 中(见附录A.2)。某些平台内置了对此 ASN.1 结构进行编码和解码的支持。

由于 PBKDF2 实际上是一个 key 派生函数,因此指定一种将“哈希”(实际上是派生 key )与派生参数捆绑在一起的方法是没有意义的 - 在正常使用中, key 必须保密,并且永远不会被存储。

但作为单向密码哈希使用时,哈希可以与参数一起存储在记录中,但存储在其自己的字段中。

关于security - 使用 PBKDF2 作为密码哈希是否有标准?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1473324/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com