我想使用 PBKDF2 和一些加密哈希函数来生成 128 位 AES 密钥。 SHA1 也是 128 位,所以我想将其与 PBKDF2 一起使用,但它已损坏,所以我选择使用 SHA256。这是否安全,或者散列大小和生成的密钥大小之间的差异是否会导致某种灾难性的静默截断,从而导致 AES 密钥变弱?我应该让它为 AES 生成 256 位密钥吗?
虽然 SHA-1 已被“破坏”,但大多数合理的系统仅使用HMAC http://en.wikipedia.org/wiki/HMAC版本,更强,可能还好 http://www.schneier.com/blog/archives/2005/02/sha1_broken.html。也就是说,较新的协议如TLS 1.2 https://www.rfc-editor.org/rfc/rfc5246, 正在使用至少 SHA-256 https://www.rfc-editor.org/rfc/rfc5246#section-5其伪随机函数(PRF)。
您应该可以将结果截断到您需要的大小(就像大多数 PRF 所做的那样)。一些先前的讨论可以在这个问题 https://stackoverflow.com/questions/915811/are-the-first-32-bits-of-a-160-bit-sha1-hash-an-acceptable-substitute-for-a-crc32.
就密钥长度而言,请参见keylength.com http://www.keylength.com/。您需要确保每个基元的使用方式保持一致。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)