让我为您详细讲解一下关于C#的3DES加密解密算法实例代码的完整攻略。
什么是3DES加密解密算法?
3DES(即Triple DES)是一种对称加密算法,它是基于DES算法的一个改进版本。3DES算法采用三次DES加密操作来增强数据加密的强度。它的密钥长度为168位,远高于DES算法的56位,因此在安全性方面比DES算法更高。
如何在C#中实现3DES的加密解密?
在C#中,可以使用自带的System.Security.Cryptography命名空间中的TripleDESCryptoServiceProvider类来实现3DES加密解密。下面是一个简单的示例代码:
首先,我们需要引入这个命名空间:
using System.Security.Cryptography;
然后,我们来实现一个加密方法:
public static string Encrypt(string text, string key)
{
byte[] plainTextBytes = Encoding.UTF8.GetBytes(text);
byte[] keyBytes = Encoding.UTF8.GetBytes(key);
TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
tdes.Mode = CipherMode.ECB;
tdes.Padding = PaddingMode.PKCS7;
tdes.Key = keyBytes;
ICryptoTransform cryptoTransform = tdes.CreateEncryptor();
byte[] encryptedBytes = cryptoTransform.TransformFinalBlock(plainTextBytes, 0, plainTextBytes.Length);
return Convert.ToBase64String(encryptedBytes, 0, encryptedBytes.Length);
}
该方法使用了UTF8编码将明文字符串转换为字节数组,并使用同样编码方式的密钥字符串得到密钥字节数组。TripleDESCryptoServiceProvider对象被创建,并设置了ECB模式和PKCS7填充模式。然后,我们将密钥字节数组传递给tdes对象,并创建了一个ICryptoTransform对象来执行加密操作。最后,通过TransformFinalBlock方法将明文字节数组加密,并将结果以Base64字符串形式返回。
下面是一个解密方法的示例代码:
public static string Decrypt(string text, string key)
{
byte[] encryptedBytes = Convert.FromBase64String(text);
byte[] keyBytes = Encoding.UTF8.GetBytes(key);
TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
tdes.Mode = CipherMode.ECB;
tdes.Padding = PaddingMode.PKCS7;
tdes.Key = keyBytes;
ICryptoTransform cryptoTransform = tdes.CreateDecryptor();
byte[] decryptedBytes = cryptoTransform.TransformFinalBlock(encryptedBytes, 0, encryptedBytes.Length);
return Encoding.UTF8.GetString(decryptedBytes);
}
该方法中,我们将加密后的Base64字符串转化为字节数组,并创建了一个与加密方法中相同的TripleDESCryptoServiceProvider对象。解密操作是通过CreateDecryptor方法创建ICryptoTransform对象并使用TransformFinalBlock方法完成的。最后,解密结果以UTF8格式的字符串形式返回。
示例
现在,我们来测试一下这两个方法:
string plainText = "This is a test message.";
string key = "1234567890abcdef";
string encryptedText = Encrypt(plainText, key);
string decryptedText = Decrypt(encryptedText, key);
Console.WriteLine("Plaintext: " + plainText);
Console.WriteLine("Encrypted Text: " + encryptedText);
Console.WriteLine("Decrypted Text: " + decryptedText);
输出:
Plaintext: This is a test message.
Encrypted Text: u5lpqQOdVJd7EoPb79Pbj3HK/zYkMdLy
Decrypted Text: This is a test message.
我们可以看到,经过加密和解密后,明文内容完全保持不变。
再来一个示例:
string plainText = "Hello, world!";
string key = "qwertyuiopasdfgh";
string encryptedText = Encrypt(plainText, key);
string decryptedText = Decrypt(encryptedText, key);
Console.WriteLine("Plaintext: " + plainText);
Console.WriteLine("Encrypted Text: " + encryptedText);
Console.WriteLine("Decrypted Text: " + decryptedText);
输出:
Plaintext: Hello, world!
Encrypted Text: DFl//gWtPHsMrWe0vvFllA==
Decrypted Text: Hello, world!
同样,加密后的字符串可以被成功解密。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#的3DES加密解密算法实例代码 - Python技术站