我想使用PBKDF2和一些加密哈希函数来生成128位AES密钥。 SHA1也是128位,所以我想把它与PBKDF2一起使用,但是它被打破了,所以我选择使用SHA256。这是安全的,还是哈希大小和最终密钥大小之间的差异会导致某种灾难性的静默截断会导致AES密钥变弱?我应该让它为AES生成256位密钥吗?
答案 0 :(得分:3)
虽然SHA-1“已损坏”,但大多数合理的系统仅使用HMAC版本,该版本更强,probably still fine。也就是说,像TLS 1.2这样的新协议正在使用at least SHA-256作为伪随机函数(PRF)。
你应该可以将结果截断到你需要的大小(就像大多数PRF一样)。之前的一些讨论可以在this question上找到。
就密钥长度而言,请参阅keylength.com。你想确保你在使用每个原语的过程中保持一致。