- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
自 SHA-3似乎是一个已知的函数(Keccak 作为 NIST 哈希函数竞赛的决赛入围者)我有几个与此主题相关的问题:
这是我在 scala 中的实现:
package my.crypto
import org.bouncycastle.crypto.digests.SHA3Digest
import org.bouncycastle.crypto.generators.PKCS5S2ParametersGenerator
import org.bouncycastle.crypto.PBEParametersGenerator
import org.bouncycastle.crypto.params.KeyParameter
object PBKDF2WithHmacSHA3 {
def apply(password: String, salt: Array[Byte], iterations: Int = 65536, keyLen: Int = 256): Array[Byte] = {
val generator = new PKCS5S2ParametersGenerator(new SHA3Digest(256))
generator.init(
PBEParametersGenerator.PKCS5PasswordToUTF8Bytes(password.toCharArray),
salt,
iterations
)
val key = generator.generateDerivedMacParameters(keyLen).asInstanceOf[KeyParameter]
key.getKey
}
}
对我来说有一点值得怀疑的是new SHA3Digest(256)
,构造函数中的256位长度,它应该与提供的 key 长度相同还是像我一样是某个固定的长度?我决定使用固定长度,因为只能使用一些固定值,并且对象 API 用户可以提供任何值作为 key 长度参数,但大多数不常见的值会导致从 SHA3Digest
构造函数内部抛出异常。另外,默认值似乎是 288(当未提供 key 长度时),这看起来很奇怪。
提前致谢!
最佳答案
不,这些值可能适用于 Final Round Keccak,而不适用于 SHA-3。目前还没有 SHA-3 规范,SHA-3 很可能会在标准化之前进行调整。
=>现在不可能实现SHA-3,只能实现Keccak。
密码哈希对于攻击者来说应该尽可能昂贵。。攻击者使用与防御者不同的硬件,至少是 GPU,但甚至可能是定制芯片。
防御者的哈希时间有限(例如 100 毫秒),并且在给定限制的情况下希望攻击者能够使用尽可能昂贵的函数。这意味着定制硬件不应该比标准计算机获得更大的优势。因此最好使用软件友好的哈希,但 Keccak 相对硬件友好。
SHA-1 和 SHA-2 在硬件上也很不错,因此在实践中,与其他密码哈希相对于 PBKDF2-HMAC-SHA-x 的优势相比,差异很小。如果您关心安全性而不是标准一致性,我推荐 scrypt。
关于scala - SHA3 状态和 PBKDF2-HMAC-SHA3 测试向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19192231/
我在 C# 中有以下代码 PasswordDeriveBytes DerivedPassword = new PasswordDeriveBytes(Password, SaltValueBytes,
是否有任何 python PBKDF (pkcs12) 实现?请注意,我不是在寻找 PBKDF1 或 PBKDF2 (pkcs5) 实现,而是在寻找 pkcs12 实现。正如本 question 中所
我是一名优秀的程序员,十分优秀!