/// <summary>
/// 生成DES密钥
/// </summary>
/// <returns>返回密钥字符串</returns>
private string DESKey()
{
//TripleDES使用24字节的key,初始向量IV也是8字节。两种算法都是以8字节为一个块进行加密,
//一个数据块一个数据块的加密,一个8字节的明文加密后的密文也是8字节。如果明文长度不为8字节的整数倍,
//添加值为0的字节凑满8字节整数倍。所以加密后的密文长度一定为8字节的整数倍。
MD5CryptoServiceProvider hashMD5 = new MD5CryptoServiceProvider();
RNGCryptoServiceProvider csp = new RNGCryptoServiceProvider();
byte[] byteCsp = new byte[60];
csp.GetBytes(byteCsp);
//ComputeHash()方法是哈希值计算器
//TripleDesCrypto加密要提供一个64整数倍的键值,做为私钥。这个可由md5生成。这里生成的是192位hash值。
string trideskey = Convert.ToBase64String(hashMD5.ComputeHash(byteCsp));
return trideskey;
}
/// <summary>
/// DES加密函数
/// </summary>
/// <param name="strContent">需要的文本加密</param>
/// <param name="strKey">DES密钥</param>
/// <param name="encoding">字符编码格式</param>
/// <returns>返回加密结果</returns>
private string DESEncoding(string strContent, string strKey, Encoding encoding)
{
TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider();
DES.Key = encoding.GetBytes(strKey);
DES.Mode = CipherMode.ECB;//ECB 电子密码本 (ECB) 模式分别加密每个块。还有其他CBC\CFB\CTS
byte[] messagebytes = encoding.GetBytes(strContent);
return Convert.ToBase64String(DES.CreateEncryptor().TransformFinalBlock(messagebytes, 0, messagebytes.Length));
}
/*-------------------------------------------------------------------------*/
//对称解密函数
/// <summary>
/// 对称解密函数
/// </summary>
/// <param name="strContent">密文文本</param>
/// <param name="strKey">密钥</param>
/// <param name="encoding">字符编码格式</param>
/// <returns></returns>
private string DESDecoding(string strContent, string strKey, Encoding encoding)
{
TripleDESCryptoServiceProvider tdesProvider = new TripleDESCryptoServiceProvider();
tdesProvider.Key = Convert.FromBase64String(strKey);
tdesProvider.Mode = CipherMode.ECB;
byte[] encrypted = Convert.FromBase64String(strContent);
return encoding.GetString(tdesProvider.CreateDecryptor().TransformFinalBlock(encrypted, 0, encrypted.Length));
}