C# DES加密(DES/CSC/PKCS7 秘钥+偏移量+hex输出) 方法小记
C# DES加密(DES/CSC/PKCS7 秘钥+偏移量+hex输出) 方法小记
#region DESEnCode DES加密
//使用这个!!!
public static string DESEnCode(string pToEncrypt, string sKey)
{
//sKey = "NudsxliCwfeqaOKI";
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
byte[] inputByteArray = Encoding.GetEncoding("UTF-8").GetBytes(pToEncrypt);
//建立加密对象的密钥和偏移量
//原文使用ASCIIEncoding.ASCII方法的GetBytes方法
//使得输入密码必须输入英文文本
//des.Mode = CipherMode.ECB;
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey.Substring(0, 8).ToString());
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey.Substring(8, 8).ToString());
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
StringBuilder ret = new StringBuilder();
foreach (byte b in ms.ToArray())
{
ret.AppendFormat("{0:X2}", b);
}
ret.ToString();
return ret.ToString();
}
/// <summary>
/// des加密
/// </summary>
/// <returns></returns>
public static string DESEncrypt(string original, string key, string iv)
{
byte[] rgbKey = Encoding.UTF8.GetBytes(key.Substring(0, 8));
byte[] rgbIV = Encoding.UTF8.GetBytes(iv);
byte[] inputByteArray = Encoding.UTF8.GetBytes(original);
try
{
using (var des = new DESCryptoServiceProvider())
{
des.Padding = PaddingMode.PKCS7;
des.Mode = CipherMode.CBC;
des.Key = rgbKey;
des.IV = rgbIV;
using (var ms = new System.IO.MemoryStream())
{
var cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
cs.Close();
cs.Dispose();
StringBuilder ret = new StringBuilder();
foreach (byte b in ms.ToArray())
{
ret.AppendFormat("{0:X2}", b);
}
return ret.ToString();
}
}
}
catch(Exception ex)
{
return "";
}
}
#endregion
