在.NET中加密短字符串的最佳方法是什么?

我的老板要我加密数据传输过程中使用的一些信息。 要加密的各个字符串长度在8到20个字符之间。 必须使用单个密码进行加密和解密,因此我需要一个对称的算法。 我不想自己动手 – 我想使用C#中内置的.NET。

那么,哪种算法最好?

TripleDes?

您可以使用System.Security.Cryptography.TripleDESCryptoServiceProvider

少量加密/解密的代码…完全按照它在锡上说的:)

TripleDES是一个非常好的选择,但您也可以考虑AesCryptoServiceProvider (AES),它是一种现代对称密码。

这是使用des3加密的加密和解密function

 '''  ''' Encrypts a memory string (ie variable). '''  ''' String to be encrypted. ''' Encryption key. ''' Encryption initialization vector. ''' Encrypted string. 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 '''  ''' Decrypts a memory string (ie variable). '''  ''' String to be decrypted. ''' Original encryption key. ''' Original initialization vector. ''' Decrypted string. 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 

.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 

您可以使用RSA加密,因为这些是短字符串,这将使密钥交换更简单。

使用RSA加密的程度取决于密钥长度。

我是充气城堡的rsa图书馆的粉丝。

DES在这一点上已经过时了。 这是维基百科 。 如果你经常更换密钥,它可能就足够了,但如果你依赖密钥一段时间,AES似乎是一个更好的选择。

当然,这是一个需要多少保护的问题。 但AES也在那里建立。

我已经使用AES作为小字符串,它工作得很好。

我读到的有关TripleDES的内容是,由于DES很容易破解,因此TripleDES仍然不大。