在C# .NET 3.5中,可以使用System.Security.Cryptography命名空间中的类来加密和解密字符串。常用的加密算法有对称加密和非对称加密。
对称加密使用相同的密钥进行加密和解密,速度较快。常见的对称加密算法有DES、3DES和AES。在C# .NET 3.5中,可以使用System.Security.Cryptography.SymmetricAlgorithm类和其派生类进行对称加密操作。
示例代码:
using System;
using System.Security.Cryptography;
using System.Text;
public class EncryptionHelper
{
// 对称加密算法密钥,长度根据算法不同而不同
private static byte[] key = Encoding.UTF8.GetBytes("12345678");
// 对称加密算法初始化向量,长度根据算法不同而不同
private static byte[] iv = Encoding.UTF8.GetBytes("87654321");
// 使用DES算法加密字符串
public static string EncryptDES(string plainText)
{
using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
{
byte[] inputBytes = Encoding.UTF8.GetBytes(plainText);
using (MemoryStream memoryStream = new MemoryStream())
{
using (CryptoStream cryptoStream = new CryptoStream(memoryStream, des.CreateEncryptor(key, iv), CryptoStreamMode.Write))
{
cryptoStream.Write(inputBytes, 0, inputBytes.Length);
cryptoStream.FlushFinalBlock();
return Convert.ToBase64String(memoryStream.ToArray());
}
}
}
}
// 使用DES算法解密字符串
public static string DecryptDES(string encryptedText)
{
using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
{
byte[] inputBytes = Convert.FromBase64String(encryptedText);
using (MemoryStream memoryStream = new MemoryStream())
{
using (CryptoStream cryptoStream = new CryptoStream(memoryStream, des.CreateDecryptor(key, iv), CryptoStreamMode.Write))
{
cryptoStream.Write(inputBytes, 0, inputBytes.Length);
cryptoStream.FlushFinalBlock();
return Encoding.UTF8.GetString(memoryStream.ToArray());
}
}
}
}
// 使用AES算法加密字符串
public static string EncryptAES(string plainText)
{
using (AesCryptoServiceProvider aes = new AesCryptoServiceProvider())
{
byte[] inputBytes = Encoding.UTF8.GetBytes(plainText);
using (MemoryStream memoryStream = new MemoryStream())
{
using (CryptoStream cryptoStream = new CryptoStream(memoryStream, aes.CreateEncryptor(key, iv), CryptoStreamMode.Write))
{
cryptoStream.Write(inputBytes, 0, inputBytes.Length);
cryptoStream.FlushFinalBlock();
return Convert.ToBase64String(memoryStream.ToArray());
}
}
}
}
// 使用AES算法解密字符串
public static string DecryptAES(string encryptedText)
{
using (AesCryptoServiceProvider aes = new AesCryptoServiceProvider())
{
byte[] inputBytes = Convert.FromBase64String(encryptedText);
using (MemoryStream memoryStream = new MemoryStream())
{
using (CryptoStream cryptoStream = new CryptoStream(memoryStream, aes.CreateDecryptor(key, iv), CryptoStreamMode.Write))
{
cryptoStream.Write(inputBytes, 0, inputBytes.Length);
cryptoStream.FlushFinalBlock();
return Encoding.UTF8.GetString(memoryStream.ToArray());
}
}
}
}
}
public class Program
{
public static void Main(string[] args)
{
string plainText = "Hello, World!";
// 使用DES算法加密字符串
string encryptedTextDES = EncryptionHelper.EncryptDES(plainText);
Console.WriteLine("Encrypted (DES): " + encryptedTextDES);
// 使用DES算法解密字符串
string decryptedTextDES = EncryptionHelper.DecryptDES(encryptedTextDES);
Console.WriteLine("Decrypted (DES): " + decryptedTextDES);
// 使用AES算法加密字符串
string encryptedTextAES = EncryptionHelper.EncryptAES(plainText);
Console.WriteLine("Encrypted (AES): " + encryptedTextAES);
// 使用AES算法解密字符串
string decryptedTextAES = EncryptionHelper.DecryptAES(encryptedTextAES);
Console.WriteLine("Decrypted (AES): " + decryptedTextAES);
}
}
在上述示例代码中,我们使用了DES和AES对称加密算法对字符串进行加密和解密。key和iv分别代表密钥和初始化向量,可以根据实际需求进行修改。
请注意,C# .NET 3.5已经较为古老,推荐升级到最新的.NET版本以获得更好的性能和安全性。此外,还应该注意密钥和加密算法的选择,以确保安全性。
领取专属 10元无门槛券
手把手带您无忧上云