Mar*_*ark 19 java encryption cryptography pbkdf2 kdf
深入研究java加密和散列世界,我看到了PBEKeySpec
类的构造函数的示例,其中包含各种值iterationCount
和keyLength
参数.似乎没有什么能解释这些参数的影响或意义.
我假设keyLength
密钥是多长时间,因此密钥长度的32位加密值为32,但这种假设感觉不对.我的猜测iterationCount
是每个字符加密的次数,也不再感受到对这个假设的喜爱.
欢迎链接到信息或解释.
Maa*_*wes 33
迭代计数是在派生对称密钥期间密码被散列的次数.数字越大,验证密码猜测越困难,然后导出正确的密钥.它与盐一起使用,用于防止使用彩虹表进行攻击.迭代计数应该尽可能高,而不会过度减慢自己的系统速度.迭代计数的更通用术语是工作因素.
密钥长度是派生的对称密钥的位长度.DESede密钥可以是128或192位长,包括奇偶校验位.AES密钥长度可以是128,192或256位.问题是API没有指定密钥长度(比特/字节,有或没有奇偶校验); 为PBEKeySpec
密钥大小是位,包括如本节中示出的奇偶校验位.
密钥派生函数通常只输出"足够"的随机位,这就是为什么你仍然可以指定所需的密钥大小.
笔记:
new SecureRandom()
然后nextBytes(int amount)
).salt可以是公共的,并使用密文或密码哈希存储.