3

を使用してTripleDESCryptoServiceProviderおり、暗号化キーを保存する必要があります。

プロバイダーGenerateKeyメソッドを呼び出した場合、これは単なる base64 エンコード文字列ですか? もしそうなら、結果の文字列をキーとして使用するなど、エンコードを解除しても安全ですか?

少し別の話ですが、一方向ハッシュを行うときに、この同じキーをソルト キーとして使用することに問題はありますか? ユーザーが暗号化手法 (プレーン、ハッシュ、暗号化) を選択できるようにする .net 用の単純なメンバーシップ プロバイダーを作成しているので、ユーザーにソルト キーと暗号化キーの両方を指定させる必要があるかどうか疑問に思いました。

4

2 に答える 2

4

GenerateKeyを呼び出すと、新しいランダムな安全な (つまり、弱くない) キーが生成されます。長さ (128 または 192) は、TripleDESCryptoServiceProviderセットアップ方法によって異なります。

プロバイダーの GenerateKey メソッドを呼び出した場合、これは base 64 でエンコードされた文字列にすぎませんか?

プロパティbyte[]からのみ取得できるため、フォーマット自体は配列です。したがって、base64 ではありませんが、必要に応じてそのように簡単にエンコードできます。KeyConvert.ToBase64String(algo.Key);

もしそうなら、結果の文字列をキーとして使用するなど、エンコードを解除しても安全ですか?

文字列をキーとして使用することはできませんbyte[]。ただし、キーを使用するまでの間、キーを文字列として保持できます (それがアプリケーションの助けになる場合)。

少し別の話ですが、一方向ハッシュを行うときに、この同じキーをソルト キーとして使用することに問題はありますか?

ランダム データをキー またはソルトとして使用する場合、問題はないはずです。(と) の両方に同じデータを使用しないでください。

于 2011-10-09T14:33:56.453 に答える
1

少し違うことに、一方向のハッシュを行うときに、これと同じキーをソルトキーとして使用することに問題はありますか?

塩は公開パラメータです。秘密鍵と対称鍵は秘密にする必要があります。

ユーザーが暗号化手法(プレーン、ハッシュ、暗号化)を選択できる.netの単純なメンバーシッププロバイダーを作成しているので、ユーザーにソルトキーと暗号化キーの両方を指定させる必要があるかどうか疑問に思いました。

答える前に、スキームに関する詳細情報を確認する必要があります。一般的に、ユーザーがフォーマットやパラメーター(パスワード以外)を選択できるようにするのは気が進まないでしょう。

于 2011-10-09T18:52:34.810 に答える