平时经常会遇到一些加密解密之类的处理,特编写成一个专门的类,以后只需要调用即可!
用法很简单,实例化类之后调用相关方法就行!会对应返回加密解密后的字符串!
//
类名:EcanSecurity
// 作用:加密解密
// 作者:刘典武
// 时间:2010-12-01
using System;
using System.Collections.Generic;
using System.Text;
using System.Security.Cryptography;
using System.IO;
namespace Ecan
{
public class EcanSecurity
{
/* MD5是message-digest algorithm 5(信息-摘要算法)的缩写,
* 被广泛用于加密和解密技术上,它可以说是文件的“数字指纹”。
* 任何一个文件,无论是可执行程序、图像文件、临时文件或者其他任何类型的文件,
* 也不管它体积多大,都有且只有一个独一无二的MD5信息值,并且如果这个文件被修改过,
* 它的MD5值也将随之改变。因此,我们可以通过对比同一文件的MD5值,
* 来校验这个文件是否被“篡改”过。 */
/// <summary>
/// MD5加密函数
/// </summary>
/// <param name="str"> 要加密的字符串 </param>
/// <returns> 加密后的字符串 </returns>
///
public string md5_Encode( string str)
{
MD5 m = new MD5CryptoServiceProvider();
byte [] data = Encoding.Default.GetBytes(str);
byte [] result = m.ComputeHash(data);
string ret1 = "" ;
try
{
for ( int j = 0 ; j < result.Length; j ++ )
{
ret1 += result[j].ToString( " x " ).PadLeft( 2 , ' 0 ' );
}
return ret1;
}
catch
{
return str;
}
}
/// <summary>
/// 简单加密函数
/// </summary>
/// <param name="str"> 要加密的字符串 </param>
/// <returns> 返回加密后的字符串 </returns>
///
public string simple_Encode( string str)
{
string s = "" ;
try
{
for ( int i = 0 ; i < str.Length; i ++ )
{
s += ( char )(str[i] + 10 - 1 * 2 );
}
return s;
}
catch
{
return str;
}
}
/// <summary>
/// 简单解密函数
/// </summary>
/// <param name="str"> 要解密的字符串 </param>
/// <returns> 返回解密后的字符串 </returns>
///
public string simple_Decode( string str)
{
string s = "" ;
try
{
for ( int i = 0 ; i < str.Length; i ++ )
{
s += ( char )(str[i] - 10 + 1 * 2 );
}
return s;
}
catch
{
return str;
}
}
// 默认密钥向量
private static byte [] Keys = { 0x12 , 0x34 , 0x56 , 0x78 , 0x90 , 0xAB , 0xCD , 0xEF };
/// <summary>
/// 对称加密法加密函数
/// </summary>
/// <param name="encryptString"> 待加密的字符串 </param>
/// <param name="encryptKey"> 加密密钥,要求为8位 </param>
/// <returns> 加密成功返回加密后的字符串,失败返回源串 </returns>
public string symmetry_Encode( string encryptString, string encryptKey)
{
try
{
byte [] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring( 0 , 8 ));
byte [] rgbIV = Keys;
byte [] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();
MemoryStream mStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
cStream.Write(inputByteArray, 0 , inputByteArray.Length);
cStream.FlushFinalBlock();
return Convert.ToBase64String(mStream.ToArray());
}
catch
{
return encryptString;
}
}
/// <summary>
/// 对称加密法解密函数
/// </summary>
/// <param name="decryptString"> 待解密的字符串 </param>
/// <param name="decryptKey"> 解密密钥,要求为8位,和加密密钥相同 </param>
/// <returns> 解密成功返回解密后的字符串,失败返源串 </returns>
public string symmetry_Decode( string decryptString, string decryptKey)
{
try
{
byte [] rgbKey = Encoding.UTF8.GetBytes(decryptKey);
byte [] rgbIV = Keys;
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 decryptString;
}
}
}
}
// 作用:加密解密
// 作者:刘典武
// 时间:2010-12-01
using System;
using System.Collections.Generic;
using System.Text;
using System.Security.Cryptography;
using System.IO;
namespace Ecan
{
public class EcanSecurity
{
/* MD5是message-digest algorithm 5(信息-摘要算法)的缩写,
* 被广泛用于加密和解密技术上,它可以说是文件的“数字指纹”。
* 任何一个文件,无论是可执行程序、图像文件、临时文件或者其他任何类型的文件,
* 也不管它体积多大,都有且只有一个独一无二的MD5信息值,并且如果这个文件被修改过,
* 它的MD5值也将随之改变。因此,我们可以通过对比同一文件的MD5值,
* 来校验这个文件是否被“篡改”过。 */
/// <summary>
/// MD5加密函数
/// </summary>
/// <param name="str"> 要加密的字符串 </param>
/// <returns> 加密后的字符串 </returns>
///
public string md5_Encode( string str)
{
MD5 m = new MD5CryptoServiceProvider();
byte [] data = Encoding.Default.GetBytes(str);
byte [] result = m.ComputeHash(data);
string ret1 = "" ;
try
{
for ( int j = 0 ; j < result.Length; j ++ )
{
ret1 += result[j].ToString( " x " ).PadLeft( 2 , ' 0 ' );
}
return ret1;
}
catch
{
return str;
}
}
/// <summary>
/// 简单加密函数
/// </summary>
/// <param name="str"> 要加密的字符串 </param>
/// <returns> 返回加密后的字符串 </returns>
///
public string simple_Encode( string str)
{
string s = "" ;
try
{
for ( int i = 0 ; i < str.Length; i ++ )
{
s += ( char )(str[i] + 10 - 1 * 2 );
}
return s;
}
catch
{
return str;
}
}
/// <summary>
/// 简单解密函数
/// </summary>
/// <param name="str"> 要解密的字符串 </param>
/// <returns> 返回解密后的字符串 </returns>
///
public string simple_Decode( string str)
{
string s = "" ;
try
{
for ( int i = 0 ; i < str.Length; i ++ )
{
s += ( char )(str[i] - 10 + 1 * 2 );
}
return s;
}
catch
{
return str;
}
}
// 默认密钥向量
private static byte [] Keys = { 0x12 , 0x34 , 0x56 , 0x78 , 0x90 , 0xAB , 0xCD , 0xEF };
/// <summary>
/// 对称加密法加密函数
/// </summary>
/// <param name="encryptString"> 待加密的字符串 </param>
/// <param name="encryptKey"> 加密密钥,要求为8位 </param>
/// <returns> 加密成功返回加密后的字符串,失败返回源串 </returns>
public string symmetry_Encode( string encryptString, string encryptKey)
{
try
{
byte [] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring( 0 , 8 ));
byte [] rgbIV = Keys;
byte [] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();
MemoryStream mStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
cStream.Write(inputByteArray, 0 , inputByteArray.Length);
cStream.FlushFinalBlock();
return Convert.ToBase64String(mStream.ToArray());
}
catch
{
return encryptString;
}
}
/// <summary>
/// 对称加密法解密函数
/// </summary>
/// <param name="decryptString"> 待解密的字符串 </param>
/// <param name="decryptKey"> 解密密钥,要求为8位,和加密密钥相同 </param>
/// <returns> 解密成功返回解密后的字符串,失败返源串 </returns>
public string symmetry_Decode( string decryptString, string decryptKey)
{
try
{
byte [] rgbKey = Encoding.UTF8.GetBytes(decryptKey);
byte [] rgbIV = Keys;
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 decryptString;
}
}
}
}
一个C#资源分享平台,专业分享学习高质量代码,每周期布置学习任务,激发学习C#兴趣!(QQ群:128874886)