m-y*_*m-y 3 encryption cryptography salt
我试图对此进行研究,但仍有一些问题没有得到解答.我正在研究如何将8个字符的密码转换为高位加密密钥.在我的研究过程中,我找到了可以谈论盐价值的文章.
假设您可以使用所有256个字符,那么8个字符的密码将是64位长.因此,剩下的64位只是一个盐值.并且,如果我错了,请纠正我,但这样做是为了如果有人试图尝试所有可能的值(蛮力)他们必须尝试所有128位,因为即使盐是未知的.
我的问题确实与这个"盐"值有关:
像往常一样,与安全相关的问题,这个答案将是一个漫长的答案.
首先,简单的答案.
问:如何将8个字符的字符串转换为128位密钥?
答:一个没有.
这是一个真实的答案.现在,一个更适合您所要求的内容:
A:创建一个随机的 64位值,并将其与密码一起存储在数据库中.现在,密码是密钥的一半,随机值是另一半.
这个是谎言.以下是您实际执行的操作:
A:使用生成128位或更长输出的方法将密码与随机盐一起散列.使用128位作为密钥.储存盐.
现在来解决你关于盐的问题.首先,salt的目的并不是真正延长加密密钥.这是为了防止人们建立彩虹表 - 从散列到未散列形式的映射.要确保您的加密不强,请想象一下攻击者知道您的密钥扩展算法.现在,他不是猜测128位密钥,而是猜测你的64位密码然后使用相同的算法.瞧.如果攻击者不知道盐,是的,你已经获得了一点,但他们必须已经有你的密文攻击它们,并且盐必须与密文一起存储在平原中.所以这是不太可能的情况.
/dev/random就是 - 系统熵池非常好.如果您担心,可以获得更好的硬件RNG.