C#编写DES加密、解密类
DES是一种对称加密算法,其全称为Data Encryption Standard。在现代通讯、网络、存储、金融等各个领域都起到了不可替代的数据加密保护作用。在C#中,可以通过编写DES加密、解密类来实现数据加密与解密操作。
1.创建DES加密、解密类
首先,我们需要创建一个类来封装DES加密、解密操作。可以参照下面的代码:
using System;
using System.Security.Cryptography;
using System.Text;
public class DESHelper
{
private static string key = "12345678"; // 8位秘钥
private static byte[] sKey = Encoding.UTF8.GetBytes(key); // 秘钥字节数组
private static byte[] sIV = Encoding.UTF8.GetBytes(key); // 向量字节数组
// 加密字符串,返回经过加密后的字符串
public static string Encrypt(string input)
{
byte[] data = Encoding.UTF8.GetBytes(input); // 待加密的字符串转换为字节数组
DESCryptoServiceProvider des = new DESCryptoServiceProvider(); // 创建DES加密对象
des.Key = sKey; // 设置秘钥
des.IV = sIV; // 设置向量
using (var ms = new System.IO.MemoryStream())
{
using (var cryptoStream = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))
{
cryptoStream.Write(data, 0, data.Length);
cryptoStream.FlushFinalBlock();
return Convert.ToBase64String(ms.ToArray()); // 转换为Base64字符串
}
}
}
// 解密字符串,返回经过解密后的原始字符串
public static string Decrypt(string input)
{
byte[] data = Convert.FromBase64String(input);
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
des.Key = sKey;
des.IV = sIV;
using (var ms = new System.IO.MemoryStream())
{
using (var cryptoStream = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write))
{
cryptoStream.Write(data, 0, data.Length);
cryptoStream.FlushFinalBlock();
return Encoding.UTF8.GetString(ms.ToArray()); // 字节数组转换为字符串
}
}
}
}
这里我们采用静态类的方式来封装加密、解密操作。其中,私有静态变量key表示秘钥,sKey和sIV分别表示秘钥和向量的字节数组。在这里,我们将秘钥和向量都设置为相同的值。
在Encrypt方法中,首先将原始字符串转换为字节数组,然后创建DES加密对象,设置秘钥和向量,使用CryptoStream将数据加密后转换为Base64字符串。在Decrypt方法中,首先将Base64字符串转换为字节数组,然后创建DES加密对象,设置秘钥和向量,使用CryptoStream将数据解密后转换为原始字符串。
2.使用DES加密、解密类
使用上面封装好的DES加密、解密类十分简单。我们可以直接调用Encrypt和Decrypt方法来实现加密、解密操作。下面给出两个示例:
示例1:加密字符串并输出结果
string inputStr = "Hello, DES!";
string encryptedStr = DESHelper.Encrypt(inputStr); // 调用DESHelper类的Encrypt方法加密字符串
Console.WriteLine("加密前:" + inputStr);
Console.WriteLine("加密后:" + encryptedStr);
运行结果如下:
加密前:Hello, DES!
加密后:NM/X+iEXd12bL9sz+0sEhQ==
示例2:解密字符串并输出结果
string inputStr = "NM/X+iEXd12bL9sz+0sEhQ==";
string decryptedStr = DESHelper.Decrypt(inputStr); // 调用DESHelper类的Decrypt方法解密字符串
Console.WriteLine("解密前:" + inputStr);
Console.WriteLine("解密后:" + decryptedStr);
运行结果如下:
解密前:NM/X+iEXd12bL9sz+0sEhQ==
解密后:Hello, DES!
这样,我们就成功地实现了DES加密、解密类,并且使用它进行了字符串加密、解密操作。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#编写DES加密、解密类 - Python技术站