using System;
using System.Security.Cryptography;
using System.Text;
using System.IO;
namespace CZTS.COMM
{
///
/// DES加密/解密类。
///
public class DESEncrypt
{
#region ========解密一========
//默认密钥向量
//private static byte[] Keys = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
private static byte[] Keys = { 0x41, 0x72, 0x65, 0x79, 0x6F, 0x75, 0x6D, 0x79, 0x53, 0x6E, 0x6F, 0x77, 0x6D, 0x61, 0x6E, 0x3F };
///
/// 解密的key 与加密key相同
///
private static string decryptKey = "36CBB25BB63A43E9B7399EAE796F41B9";
///
/// AES解密
///
/// 需要解密的字符串
/// 需要解密的Key
///
public static string Decode(string decryptString)
{
try
{
decryptKey = Utils.GetSubString(decryptKey, 32, "");
decryptKey = decryptKey.PadRight(32, ' ');
RijndaelManaged rijndaelProvider = new RijndaelManaged();
rijndaelProvider.Key = Encoding.UTF8.GetBytes(decryptKey);
rijndaelProvider.IV = Keys;
ICryptoTransform rijndaelDecrypt = rijndaelProvider.CreateDecryptor();
byte[] inputData = Convert.FromBase64String(decryptString);
byte[] decryptedData = rijndaelDecrypt.TransformFinalBlock(inputData, 0, inputData.Length);
return Encoding.UTF8.GetString(decryptedData);
}
catch
{
return "";
}
}
#endregion
#region ========解密二========
//默认密钥向量
private static byte[] DESKeys = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
///
/// 解密的key
///
private static string DESdecryptKey = "!@#$%^&*";
///
/// DES解密字符串
///
/// 待解密的字符串
/// 解密成功返回解密后的字符串,失败返源串
public static string DESDecode(string decryptString)
{
try
{
DESdecryptKey = Utils.GetSubString(DESdecryptKey, 8, "");
DESdecryptKey = DESdecryptKey.PadRight(8, ' ');
byte[] rgbKey = Encoding.UTF8.GetBytes(DESdecryptKey);
byte[] rgbIV = DESKeys;
byte[] inputByteArray = Convert.FromBase64String(decryptString);
DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider();
MemoryStream mStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
cStream.Write(inputByteArray, 0, inputByteArray.Length);
cStream.FlushFinalBlock();
return Encoding.UTF8.GetString(mStream.ToArray());
}
catch
{
return "";
}
}
#endregion
#region ========解密三========
///
/// 解密
///
///
///
public static string Decrypt(string Text)
{
return Decrypt(Text, "jijianguo");
}
///
/// 解密数据
///
///
///
///
public static string Decrypt(string Text, string sKey)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
int len;
len = Text.Length / 2;
byte[] inputByteArray = new byte[len];
int x, i;
for (x = 0; x < len; x++)
{
i = Convert.ToInt32(Text.Substring(x * 2, 2), 16);
inputByteArray[x] = (byte)i;
}
des.Key = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));
des.IV = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));
System.IO.MemoryStream ms = new System.IO.MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
return Encoding.Default.GetString(ms.ToArray());
}
#endregion
}
}