如何将可变长度密码转换为固定长度密钥

时间:2017-01-20 10:01:57

标签: encryption passwords password-encryption

通常,密码是任意字符串,例如" abc"," 1234"。但像DES这样的加密算法需要一个固定长度的密钥。我想知道如何以可靠的方式将可变长度密码转换为固定长度的密钥。

2 个答案:

答案 0 :(得分:3)

使用基于密码的密钥派生函数从密码派生加密密钥:PBKDF2(又名Rfc2898DeriveBytes)。使用随机盐和迭代计数,使得推导需要大约100ms的计算时间。

必须使用相同的salt和迭代计数来导出解密密钥,它们可以加在加密数据之前,因为它们不需要保密。

仅仅使用哈希函数是不够的,只添加一个盐对提高安全性没什么作用。

重点是让攻击者花费大量时间通过暴力查找密码。

答案 1 :(得分:1)

您需要使用salt值(以防止字典攻击)和良好的键偏差功能,如 scrypt,bcrypt或PBKDF2

如果您只使用哈希函数生成密钥,那么生成的密钥很可能是SHA256(“abcd”)或SHA256(“密码”)。也就是说,这种方法非常容易受到暴力攻击。