/// <summary>
/// 加密类
/// <para>Date:2012-04-23 PM.</para>
/// </summary>
public class Encrypt
{
/// <summary>
/// 默认密钥向量.
/// </summary>
private static readonly byte[] Keys = { 0xAB, 0xCD, 0xEF, 0x68, 0xDB, 0xFA, 0x01, 0xE2 };
private Encrypt() { }
/// <summary>
/// 创建加密类对象.
/// </summary>
public static Encrypt CreateCryptoServiceProvider()
{
return new Encrypt();
}
/// <summary>
/// DES加密.
/// </summary>
/// <param name="_EncryptStr">待加密字符串.</param>
/// <param name="_EncryptKey">加密密钥. 8位</param>
/// <returns></returns>
public String DESEncrypt(String _EncryptStr,String _EncryptKey)
{
try
{
byte[] RogerKey = Encoding.Default.GetBytes(_EncryptKey.Substring(0, 8));
byte[] RogerIV = Keys;
byte[] RogerString = Encoding.Default.GetBytes(_EncryptStr);
DES RogerDES = new DESCryptoServiceProvider();
MemoryStream RogerMs = new MemoryStream();
CryptoStream RogerCs = new CryptoStream(RogerMs, RogerDES.CreateEncryptor(RogerKey, RogerIV), CryptoStreamMode.Write);
RogerCs.Write(RogerString, 0, RogerString.Length);
RogerCs.FlushFinalBlock();
String result = BitConverter.ToString(RogerMs.ToArray()).Replace("-", string.Empty);
return result;
}
catch (Exception)
{
return _EncryptStr;
}
}
/// <summary>
/// DES解密.
/// </summary>
/// <param name="_DecryptStr">等解密的字符串.</param>
/// <param name="_DecryptKey">解密密钥. 8位</param>
/// <returns></returns>
public String DESDecrypt(String _DecryptStr, String _DecryptKey)
{
try
{
byte[] RogerKey = Encoding.Default.GetBytes(_DecryptKey.Substring(0, 8));
byte[] RogerIV = Keys;
int blocks = _DecryptStr.Length / 2;
byte[] EncryptByteData = new byte[blocks];
String tempItem = null;
for (int i = 0; i < blocks; i++)
{
tempItem = _DecryptStr.Substring(i * 2, 2);
EncryptByteData[i] = byte.Parse(tempItem, System.Globalization.NumberStyles.HexNumber);
}
DES RogerDES = new DESCryptoServiceProvider();
MemoryStream RogerMs = new MemoryStream();
CryptoStream RogerCs = new CryptoStream(RogerMs, RogerDES.CreateDecryptor(RogerKey, RogerIV), CryptoStreamMode.Write);
RogerCs.Write(EncryptByteData, 0, EncryptByteData.Length);
RogerCs.FlushFinalBlock();
String result = Encoding.Default.GetString(RogerMs.ToArray());
return result;
}
catch (Exception)
{
return _DecryptStr;
}
}
}
DES加密解密
最新推荐文章于 2024-01-25 11:52:03 发布