- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
和我一起对抗弱密码哈希。
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/
我在 C# 中有以下代码 PasswordDeriveBytes DerivedPassword = new PasswordDeriveBytes(Password, SaltValueBytes,
是否有任何 python PBKDF (pkcs12) 实现?请注意,我不是在寻找 PBKDF1 或 PBKDF2 (pkcs5) 实现,而是在寻找 pkcs12 实现。正如本 question 中所
我是一名优秀的程序员,十分优秀!