2009-05-10 32 views
8

私の上司は、データ転送中に使用された情報を暗号化したいと考えています。暗号化される個々の文字列は8〜20文字です。暗号化と復号化には1つのパスワードを使用する必要がありますので、対称アルゴリズムが必要です。私は自分自身をロールしたくない - 私はC#から.NETに組み込まれたものを使いたい。.NETで短い文字列を暗号化する最も良い方法は何ですか?

だから、どのアルゴリズムが最適ですか?

+2

ROT13。それも超効率的です! –

+0

私のポストを参照してください:[http://stackoverflow.com/questions/202011/encrypt-decrypt-string-in-c](http://stackoverflow.com/questions/202011/encrypt-decrypt-string-in- c) – NotDan

+0

[暗号化チュートリアル](http://msdn.microsoft.com/en-us/library/aa302405.aspx)を参照してください。 –

答えて

8

TripleDes?

あなたは解読/ encrypyするコードのSystem.Security.Cryptography.TripleDESCryptoServiceProvider

少量を使用することができます...それは錫で言うまさにません:)

+0

私はあなたに同意しますDESは彼にとって最良の選択です。 –

+0

鍵交換を安全に行う方法は、私のDESに関する懸念だけです。 –

+1

この問題(鍵交換)は、任意の対称暗号(もちろん非対称の問題もあります)に適用され、OPは明示的に対称に要求されます。 http://en.wikipedia。org/wiki/Key_exchangeは良い場所ですが、複雑なトピックです。 –

1

これらは短い文字列であるので、あなたはただ、RSA暗号化を使用することができます鍵交換が簡単になります。

RSAでどのくらい暗号化できるかは、鍵の長さに基づいています。

私はbouncy castleからrsaライブラリのファンです。

6

TripleDESは非常に良い選択ですが、近代的な対称暗号であるAesCryptoServiceProvider(AES)も考えられます。

2

.NETのセキュリティクラス:

ハッシュ

* MD5 
* MD5Cng 
* SHA1 
* SHA1Managed 
* SHA1Cng 
* SHA256 
* SHA256Managed 
* SHA256Cng 
* SHA384 
* SHA384Managed 
* SHA384Cng 
* SHA512 
* SHA512Managed 
* SHA512Cng 

対称暗号化:暗号化と復号に同じ鍵を使用します。

* DES 
* DESCryptoServiceProvider 
* TripleDES 
* TripleDESCryptoServiceProvider 
* Aes 
* AesCryptoServiceProvider 
* AesManaged 
* RC2 
* RC2CryptoServiceProvider 
* Rijandel 
* RijandelManaged 

非対称暗号化:暗号化と復号化に異なるキーを使用します。ここで

* DSA 
* DSACryptoServiceProvider 
* ECDsa 
* ECDsaCng 
* ECDiffieHellman 
* ECDiffieHellmanCng 
* RSA 
* RSACryptoServideProvider 
+1

これはクラス名の非常に優れたダンプですが、それらのほとんどは、ハッシュまたは非対称暗号ではなく、サブミッター(/対称/ /暗号化/アルゴリズムが必要です)との関連性はありません。 –

3

がDES3暗号化と暗号&復号化機能である

''' <summary> 
''' Encrypts a memory string (i.e. variable). 
''' </summary> 
''' <param name="data">String to be encrypted.</param> 
''' <param name="key">Encryption key.</param> 
''' <param name="iv">Encryption initialization vector.</param> 
''' <returns>Encrypted string.</returns> 
Public Shared Function Encrypt(ByVal data As String, ByVal key As String, ByVal iv As String) As String 
    Dim bdata As Byte() = Encoding.ASCII.GetBytes(data) 
    Dim bkey As Byte() = HexToBytes(key) 
    Dim biv As Byte() = HexToBytes(iv) 

    Dim stream As MemoryStream = New MemoryStream 
    Dim encStream As CryptoStream = New CryptoStream(stream, des3.CreateEncryptor(bkey, biv), CryptoStreamMode.Write) 

    encStream.Write(bdata, 0, bdata.Length) 
    encStream.FlushFinalBlock() 
    encStream.Close() 

    Return BytesToHex(stream.ToArray()) 
End Function 

''' <summary> 
''' Decrypts a memory string (i.e. variable). 
''' </summary> 
''' <param name="data">String to be decrypted.</param> 
''' <param name="key">Original encryption key.</param> 
''' <param name="iv">Original initialization vector.</param> 
''' <returns>Decrypted string.</returns> 
Public Shared Function Decrypt(ByVal data As String, ByVal key As String, ByVal iv As String) As String 
    Dim bdata As Byte() = HexToBytes(data) 
    Dim bkey As Byte() = HexToBytes(key) 
    Dim biv As Byte() = HexToBytes(iv) 

    Dim stream As MemoryStream = New MemoryStream 
    Dim encStream As CryptoStream = New CryptoStream(stream, des3.CreateDecryptor(bkey, biv), CryptoStreamMode.Write) 

    encStream.Write(bdata, 0, bdata.Length) 
    encStream.FlushFinalBlock() 
    encStream.Close() 

    Return Encoding.ASCII.GetString(stream.ToArray()) 
End Function 
0

DESは、この時点でほとんど廃止されました。ここにはWikipediaがあります。キーをたくさん変更しているのであれば十分かもしれませんが、しばらくキーに頼っているのであれば、AESはより良い選択のようです。

もちろん、どれくらいの保護が必要なのかという疑問です。しかし、AESもそこに組み込まれています。

私は小さな文字列にAESを使用しています。

私がTripleDESについて読んだことは、DESは簡単に分解可能であるため、TripleDESはそれほど重要ではないということです。

+2

実際、Wikipedia(http://en.wikipedia.org/wiki/TripleDES#Security)とNIST(http://csrc.nist.gov/publications/nistpubs/800-57/SP800-57-Part1.pdf) (p。66)、TripleDESは2030年まで安全だと言われています。 –

+0

[Original NIST document](http://web.archive.org/web/20090327043940/http://csrc.nist.gov/publications/ nistpubs/800-57/SP800-57-Part1.pdf)をインターネットアーカイブから入手してください。 [NISTの改訂版](http://csrc.nist.gov/publications/nistpubs/800-57/sp800-57-Part1-revised2_Mar08-2007.pdf)(2007年)、トリプルDESについても同様の結論を得ました。 –

関連する問題