我在这里读了很多关于 Rfc2898DeriveBytes() 的帖子,似乎在所有这些帖子中,盐都是预先计算并传递给构造函数的。 但是,有一个构造函数接受盐长度输入,并且将为您计算盐。 之后可在 Salt 属性中使用。
让该方法计算盐有什么缺点吗? 就我而言,用法是用于密码哈希。
指定盐长度而不是盐本身可以减少在派生新密钥(或隐藏存储密码)时不安全选择盐的机会。盐应由加密随机位生成器选择,并且应在每次更新密码时更改。据推测,此构造函数将使用已正确播种的高质量 RNG。保留这一点,应用程序在最坏的情况下允许错误,充其量会产生不必要的复杂性。
当然,如果要恢复密钥,例如根据存储的密码检查用户输入,则需要指定最初使用的盐。