我的老板要我加密数据传输过程中使用的一些信息。要加密的各个字符串长度在8到20个字符之间。必须使用单个密码进行加密和解密,因此我需要一个对称的算法。我不想自己动手 - 我想使用C#中内置的.NET。
那么,哪种算法最好?
答案 0 :(得分:8)
TripleDes?
您可以使用System.Security.Cryptography.TripleDESCryptoServiceProvider
加密/解密的少量代码......完全按照它在锡上所说的那样:)
答案 1 :(得分:6)
TripleDES是一个非常好的选择,但您也可以考虑使用AesCryptoServiceProvider(AES),这是一种现代对称密码。
答案 2 :(得分:3)
.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
答案 3 :(得分: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
答案 4 :(得分:1)
您可以使用RSA加密,因为这些是短字符串,这将使密钥交换更简单。
使用RSA加密的程度取决于密钥长度。
我是充气城堡的rsa图书馆的粉丝。
答案 5 :(得分:0)
当然,这是一个需要多少保护的问题。但AES也在那里建立。
我已经将AES用于小字符串,并且效果很好。
我读到的有关TripleDES的内容是,由于DES很容易破解,因此TripleDES仍然不大。