DES加密是传统的对称加密,使用8位的向量和8位的密钥进行加密的。
现在我们定义向量和密钥:
向量 byte[] iv = { 0x13, 0x65, 0x57, 0x89, 0x93, 0xAB, 0xCD, 0xEF };
密钥:20200516
using System;
using System.Collections.Generic;
using System.Security.Cryptography;
using System.Text;
using System.IO;
/// <summary>
/// DES加密
/// </summary>
/// <param name="toEncrypt">需要加密的字符串</param>
/// <param name="key">8位密钥</param>
/// <returns>加密后的字符串</returns>
public static string Encrypt(string toEncrypt, string key, byte[] iv)
{
byte[] keyArray = System.Text.Encoding.UTF8.GetBytes(key);
byte[] toEncryptArray = System.Text.Encoding.UTF8.GetBytes(toEncrypt);
DESCryptoServiceProvider dES = new DESCryptoServiceProvider();
dES.Key =Encoding.UTF8.GetBytes(key);
dES.IV = iv;
MemoryStream stream = new MemoryStream();
CryptoStream cs = new CryptoStream(stream, dES.CreateEncryptor(), CryptoStreamMode.Write);
cs.Write(toEncryptArray, 0, toEncryptArray.Length);
cs.FlushFinalBlock();
return Convert.ToBase64String(stream.ToArray());
}
/// <summary>
/// DES解密
/// </summary>
/// <param name="toDecrypt">需要解密的内容</param>
/// <param name="key">密钥</param>
/// <param name="iv">加密向量</param>
/// <returns></returns>
public static string Decrypt(string toDecrypt, string key, byte[] iv)
{
byte[] keyArry = Encoding.UTF8.GetBytes(key);
byte[] toDecryptArray = Convert.FromBase64String(toDecrypt);
DESCryptoServiceProvider dES = new DESCryptoServiceProvider();
dES.Key = Encoding.UTF8.GetBytes(key);
dES.IV = iv;
MemoryStream stream = new MemoryStream();
CryptoStream cs = new CryptoStream(stream, dES.CreateDecryptor(), CryptoStreamMode.Write);
cs.Write(toDecryptArray, 0, toDecryptArray.Length);
cs.FlushFinalBlock();
return System.Text.Encoding.UTF8.GetString(stream.ToArray());
}