2010-12-02 3 views
0

可能性の重複:
How to encrypt a string in .NET?優れた暗号化

C#で文字列型データのための最も優れており、過酷な暗号化である1

..

+2

ワンタイムパッドは破られません。 –

+0

暗号化/ハッシュと目的を明記してください。適切な暗号化はユースケースによって大きく異なります。 – CodesInChaos

+0

@Henk Holterman いいえあなたが投稿を読んでいるかどうか知りたいことがあります。://: –

答えて

1

私の主答えは "それはあなたがその文字列でやっていることに依存しています"。この質問(と回答)は...

.NET Secure Memory Structures

をご案内します...しかし、それはあなたが使用予定のどのメモリ内の文字列を、どのようにあなたがそれを持続しているあなたはencyrptingしている場合/セキュリティを、依存しますその文字列とそれをどのように処分するかを指定します。

これらのSOの質問は...あまりにもこれらのトピックに

How to encrypt a string in .NET?

What's the best way to encrypt short strings in .NET?

に触れ...と便利なリンクが含まれています。

+0

ありがとうございます! 何とか私は、文字列を暗号化するためにMD5ハッシュを使用しており、暗号化された文字列を10回の反復でループに入れています。例えば、 encryptedstr = EncryptString(encryptedstr); これは問題なのですか? –

+0

md5はハッシュ関数(片道)で、暗号化なし(可逆)です。パスワードを安全に保存しますか? – CodesInChaos

+0

@Inv Xaasha、MD5は暗号化ではありません。戻す方法はありません。安全なハッシュが必要なものを(もしそれを取り戻す方法を必要としない)行い、MD5でのセキュリティの相対的な不安を心配しているなら、SHA-256ファミリーのようなSHA-2ファミリー。 –

2

これは実際の要件によります。

ほとんどの現代の暗号化アルゴリズムは、適切に使用すれば、必要に応じて十分に強力です。

システム内の弱点は、暗号化アルゴリズムそのものではありません。ほとんどの場合、攻撃の脆弱性はアルゴリズムよりも脆弱です。

0

これはone-time padです。正しく実装されていると、クラックすることは不可能であることが証明されていますが、OTPはおそらくあなたのための実行可能なオプションではありません。

RSA encryptionは非常に安全であり、.NET supports itです。しかし、非対称暗号化は鍵サイズよりも小さいデータを暗号化するために設計されているだけなので、任意の文字列の暗号化にはあまり適していません。それで私たちは暗号をブロックし、その中で私はAESをお勧めします。

+0

もちろん、前者の機能と後者の機能が必要な場合は、非対称と対称を組み合わせることができます。ランダムに対称鍵を作成し、それを使ってデータを暗号化し、非対称鍵を暗号化します。暗号化された鍵と共に暗号化されたデータを送信(格納、その他)します。 –