以下是详细的“C#加密解密类实例程序”的攻略:
一、概述
在现代信息技术领域,数据加密已经成为很多应用的基本需求。为此,C#提供了一系列的加密解密类,比如MD5、SHA1、DES、AES等等。本文将主要介绍使用C#实现加密解密的方法,其中涉及到的加密算法是DES和AES。
二、加密解密实例
2.1 DES加密解密
DES是一种常用的对称加密算法,下面是一个使用DES加密和解密的示例程序:
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
public class DESCryptoHelper
{
private static byte[] KEY = Encoding.UTF8.GetBytes("12345678");
private static byte[] IV = Encoding.UTF8.GetBytes("abcdefgh");
public static string DESEncrypt(string str)
{
DESCryptoServiceProvider desProvider = new DESCryptoServiceProvider();
MemoryStream stream = new MemoryStream();
CryptoStream cs = new CryptoStream(stream, desProvider.CreateEncryptor(KEY, IV), CryptoStreamMode.Write);
byte[] data = Encoding.UTF8.GetBytes(str);
cs.Write(data, 0, data.Length);
cs.FlushFinalBlock();
return Convert.ToBase64String(stream.ToArray());
}
public static string DESDecrypt(string str)
{
DESCryptoServiceProvider desProvider = new DESCryptoServiceProvider();
MemoryStream stream = new MemoryStream(Convert.FromBase64String(str));
CryptoStream cs = new CryptoStream(stream, desProvider.CreateDecryptor(KEY, IV), CryptoStreamMode.Read);
StreamReader reader = new StreamReader(cs);
return reader.ReadToEnd();
}
}
以上代码中用到的KEY和IV是DES算法中的密钥和初始化向量。在使用DES算法进行加密和解密时,需要把明文和密钥分别转换成字节数组,并用CryptoStream将明文和密钥进行加密或解密操作。
2.2 AES加密解密
AES是一个先进的对称加密算法,也是目前应用最广泛的加密算法之一。下面是一个使用AES加密和解密的示例程序:
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
public class AESCryptoHelper
{
private static byte[] KEY = Encoding.UTF8.GetBytes("1234567812345678");
private static byte[] IV = Encoding.UTF8.GetBytes("abcdefghabcdefgh");
public static string AESEncrypt(string str)
{
AesCryptoServiceProvider aesProvider = new AesCryptoServiceProvider();
MemoryStream stream = new MemoryStream();
CryptoStream cs = new CryptoStream(stream, aesProvider.CreateEncryptor(KEY, IV), CryptoStreamMode.Write);
byte[] data = Encoding.UTF8.GetBytes(str);
cs.Write(data, 0, data.Length);
cs.FlushFinalBlock();
return Convert.ToBase64String(stream.ToArray());
}
public static string AESDecrypt(string str)
{
AesCryptoServiceProvider aesProvider = new AesCryptoServiceProvider();
MemoryStream stream = new MemoryStream(Convert.FromBase64String(str));
CryptoStream cs = new CryptoStream(stream, aesProvider.CreateDecryptor(KEY, IV), CryptoStreamMode.Read);
StreamReader reader = new StreamReader(cs);
return reader.ReadToEnd();
}
}
以上代码中用到的KEY和IV是AES算法中的密钥和初始化向量。在使用AES算法进行加密和解密时,需要把明文和密钥分别转换成字节数组,并用CryptoStream将明文和密钥进行加密或解密操作。
三、示例说明
3.1 使用DES进行加密解密
string oriStr = "Hello,world!";//明文
string encryptedStr = DESCryptoHelper.DESEncrypt(oriStr);//加密
string decryptedStr = DESCryptoHelper.DESDecrypt(encryptedStr);//解密
Console.WriteLine("原始字符串:" + oriStr);
Console.WriteLine("加密后字符串:" + encryptedStr);
Console.WriteLine("解密后字符串:" + decryptedStr);
执行以上代码后的输出结果为:
原始字符串:Hello,world!
加密后字符串:oOZbB6MurUA=
解密后字符串:Hello,world!
3.2 使用AES进行加密解密
string oriStr = "Hello,world!";//明文
string encryptedStr = AESCryptoHelper.AESEncrypt(oriStr);//加密
string decryptedStr = AESCryptoHelper.AESDecrypt(encryptedStr);//解密
Console.WriteLine("原始字符串:" + oriStr);
Console.WriteLine("加密后字符串:" + encryptedStr);
Console.WriteLine("解密后字符串:" + decryptedStr);
执行以上代码后的输出结果为:
原始字符串:Hello,world!
加密后字符串:d+5VCEzRyLV3L/iQzqFF4Q==
解密后字符串:Hello,world!
四、总结
在C#中使用加密解密类加密解密数据十分简单,并且通过KEY和IV可以使得加密后的数据更加安全。开发者可以根据不同的需求选择不同的加密算法和加密方式。值得注意的是,在使用加密解密类时,必须要注意密钥和初始向量的长度,否则加密和解密会出现异常。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#加密解密类实例程序 - Python技术站