ここで Rfc2898DeriveBytes() に関する多くの投稿を読みましたが、それらのすべてで、ソルトが事前に計算され、コンストラクターに渡されているようです。ただし、ソルトの長さの入力を受け入れるコンストラクターがあり、ソルトが計算されます。その後、Salt プロパティで使用できます。
メソッドに塩を計算させることの不利な点はありますか? 私の場合、使用法はパスワードハッシュです。
ソルト自体の代わりにソルトの長さを指定すると、新しい鍵を導出するとき (またはストレージ用のパスワードを不明瞭にするとき) にソルトが安全に選択されない可能性を減らすことができます。ソルトは、暗号ランダム ビット ジェネレーターによって選択され、パスワードが更新されるたびに変更される必要があります。おそらく、このコンストラクターは、適切にシードされた高品質の RNG を使用します。それをアプリケーションに任せると、最悪の場合はミスが発生する可能性があり、せいぜい不必要な複雑さが生じるだけです。
もちろん、キーを復元する場合、たとえばユーザー入力を保存されたパスワードと照合する場合は、最初に使用されたソルトを指定する必要があります。