2011-12-21 5 views
3

私はC#を使用して文字列を暗号化/復号化しようとしています。私はこれに方法に関する無数のチュートリアルを見つけました:thisしかし、彼らのほとんどはあなたがすでに鍵を持っていると仮定します。だから私の質問は:C#キーを生成する暗号化

私はどのように鍵を生成するのですか?

ありがとうございます。あなたはここに1

http://randomkeygen.com/またはhttps://www.grc.com/passwords.htm

を生成する。しかし、キーの種類をすることができます何をしたいキーに応じて、まあ

+1

パスフェーズは –

+0

と簡単ですか? – Jonny

+0

私はそう言います。 –

答えて

4

あなたはSystem.Security.Cryptography名前空間での暗号化クラスを使用している場合は、パスワードから鍵を導出する(@CodeInChaosはそれがPasswordDeriveBytesに取って代わることを指摘)Rfc2898DeriveBytesクラスを使用します。

ランダムキーがOKの場合、SymmetricAlgorithmクラスのメソッドはGenerateKeyです。

+0

私は 'Rfc2898DeriveBytes'を好むでしょうhttp://msdn.microsoft.com/en-us/library/system.security.cryptography.rfc2898derivebytes.aspx – CodesInChaos

+0

@CodeInChaos、なぜTLを選択するのですか?もう一方では? – shambulator

+0

'Rfc2898DeriveBytes'はPBKDF2、' PasswordDeriveBytes'はPBKDF1です。そして私は単純に2が1より良いと仮定します。 – CodesInChaos

1

あなたは後にしていますか?

2

これは、キーを処理するかどうかによって異なります。

鍵を自動的に生成し、鍵交換方式で鍵を交換すると、強力な乱数生成器(RNGCryptoServiceProviderなど)で鍵を生成する必要があります。実際.NETのほとんどのCiphersは自動的にランダムキーを生成します。

ユーザーがパスワードを入力したい場合は、Rfc2898DeriveBytesクラスを使用することをお勧めします。 .NET Security blogについてのチュートリアルもあります。Rfc2898DeriveBytesです。

関連する問題