这里给大家一个现成的c#加密解密类,由 admin10000.com 提供,包含md5、sha1、des加密和解密,base64编码解码。
首先导入命名空间
using system.web.security;
using system.security.cryptography;
using system.text;
using system.io;
/// <summary>
/// encrypthelper 来自 www.admin10000.com
/// </summary>
public class encrypthelper
{
// 提供8个字符作为des密钥(程序自动截取前8个字符)
private static string key = "admin10000.com";
/// <summary>
/// des对称加密解密的密钥
/// </summary>
public static string key
{
get
{
return key;
}
set
{
key = value;
}
}
/// <summary>
/// md5 加密(不可逆加密)
/// </summary>
/// <param name="pass">要加密的原始字串</param>
/// <returns></returns>
public static string md5encrypt(string pass)
{
system.security.cryptography.md5 md5 = new system.security.cryptography.md5cryptoserviceprovider();
byte[] bytresult = md5.computehash(system.text.encoding.utf8.getbytes(pass));
md5.clear();
string strresult = bitconverter.tostring(bytresult);
strresult = strresult.replace("-", "");
return strresult;
/* 另一种方法
pass = formsauthentication.hashpasswordforstoringinconfigfile(pass, "md5");
return pass;
*/
}
/// <summary>
/// sha1 加密(不可逆加密)
/// </summary>
/// <param name="pass">要加密的原始字串</param>
/// <returns></returns>
public static string sha1encrypt(string pass)
{
system.security.cryptography.sha1 sha1 = new system.security.cryptography.sha1cryptoserviceprovider();
byte[] bytresult = sha1.computehash(system.text.encoding.utf8.getbytes(pass));
sha1.clear();
string strresult = bitconverter.tostring(bytresult);
strresult = strresult.replace("-", "");
return strresult;
/* 另一种方法
pass = formsauthentication.hashpasswordforstoringinconfigfile(pass, "sha1");
return pass;
*/
}
/// <summary>
/// des加密字符串
/// </summary>
/// <param name="encryptstring">待加密的字符串</param>
/// <returns>加密成功返回加密后的字符串,失败返回源串</returns>
public static string desencrypt(string encryptstring)
{
try
{
byte[] rgbkey = encoding.utf8.getbytes(key.substring(0, 8));
byte[] rgbiv = rgbkey;
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();
cstream.close();
return convert.tobase64string(mstream.toarray());
}
catch
{
return encryptstring;
}
}
/// <summary>
/// des解密字符串
/// </summary>
/// <param name="decryptstring">待解密的字符串</param>
/// <returns>解密成功返回解密后的字符串,失败返源串</returns>
public static string desdecrypt(string decryptstring)
{
try
{
byte[] rgbkey = encoding.utf8.getbytes(key.substring(0, 8));
byte[] rgbiv = rgbkey;
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();
cstream.close();
return encoding.utf8.getstring(mstream.toarray());
}
catch
{
return decryptstring;
}
}
/// <summary>
/// 将普通字符串编码为base64字串
/// </summary>
/// <param name="str">源字符串</param>
/// <returns></returns>
public static string base64encode(string str)
{
return convert.tobase64string(encoding.utf8.getbytes(str));
}
/// <summary>
/// 解码base64字串
/// </summary>
/// <param name="str">base64字串</param>
/// <returns></returns>
public static string base64decode(string base64str)
{
return encoding.utf8.getstring(convert.frombase64string(base64str));
}
}