私の上司は、データ転送中に使用された情報を暗号化したいと考えています。暗号化される個々の文字列は8〜20文字です。暗号化と復号化には1つのパスワードを使用する必要がありますので、対称アルゴリズムが必要です。私は自分自身をロールしたくない - 私はC#から.NETに組み込まれたものを使いたい。.NETで短い文字列を暗号化する最も良い方法は何ですか?
だから、どのアルゴリズムが最適ですか?
私の上司は、データ転送中に使用された情報を暗号化したいと考えています。暗号化される個々の文字列は8〜20文字です。暗号化と復号化には1つのパスワードを使用する必要がありますので、対称アルゴリズムが必要です。私は自分自身をロールしたくない - 私はC#から.NETに組み込まれたものを使いたい。.NETで短い文字列を暗号化する最も良い方法は何ですか?
だから、どのアルゴリズムが最適ですか?
TripleDes?
あなたは解読/ encrypyするコードのSystem.Security.Cryptography.TripleDESCryptoServiceProvider
少量を使用することができます...それは錫で言うまさにません:)
私はあなたに同意しますDESは彼にとって最良の選択です。 –
鍵交換を安全に行う方法は、私のDESに関する懸念だけです。 –
この問題(鍵交換)は、任意の対称暗号(もちろん非対称の問題もあります)に適用され、OPは明示的に対称に要求されます。 http://en.wikipedia。org/wiki/Key_exchangeは良い場所ですが、複雑なトピックです。 –
これらは短い文字列であるので、あなたはただ、RSA暗号化を使用することができます鍵交換が簡単になります。
RSAでどのくらい暗号化できるかは、鍵の長さに基づいています。
私はbouncy castleからrsaライブラリのファンです。
TripleDESは非常に良い選択ですが、近代的な対称暗号であるAesCryptoServiceProvider(AES)も考えられます。
.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
これはクラス名の非常に優れたダンプですが、それらのほとんどは、ハッシュまたは非対称暗号ではなく、サブミッター(/対称/ /暗号化/アルゴリズムが必要です)との関連性はありません。 –
が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
DESは、この時点でほとんど廃止されました。ここにはWikipediaがあります。キーをたくさん変更しているのであれば十分かもしれませんが、しばらくキーに頼っているのであれば、AESはより良い選択のようです。
もちろん、どれくらいの保護が必要なのかという疑問です。しかし、AESもそこに組み込まれています。
私は小さな文字列にAESを使用しています。
私がTripleDESについて読んだことは、DESは簡単に分解可能であるため、TripleDESはそれほど重要ではないということです。
実際、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年まで安全だと言われています。 –
[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についても同様の結論を得ました。 –
ROT13。それも超効率的です! –
私のポストを参照してください:[http://stackoverflow.com/questions/202011/encrypt-decrypt-string-in-c](http://stackoverflow.com/questions/202011/encrypt-decrypt-string-in- c) – NotDan
[暗号化チュートリアル](http://msdn.microsoft.com/en-us/library/aa302405.aspx)を参照してください。 –