c#多种加解密示例(md5加密解密)

  using System;

  using System.Collections.Generic;

  using System.Globalization;

  using System.IO;

  using System.Security.Cryptography;

  using System.Text;

  ///

  /// 加解密

  ///

  public static class CryptHelper

  {

  #region RSA加密

  ///

  /// 用指定公钥加密文本

  ///

  /// 公钥

  /// 文本

  ///

  public static string RsaEncrypt(string publicKey, string input)

  {

  const string sFormat =

  "{0}AQAB";

  var provider = new RSACryptoServiceProvider();

  var arrPubKey = Hex2Bytes(publicKey);

  var pkB64 = Convert.ToBase64String(arrPubKey);

  var xmlStr = string.Format(sFormat, pkB64);

  var bytesInput = Encoding.UTF8.GetBytes(input);

  provider.FromXmlString(xmlStr);

  var encryptArray = provider.Encrypt(bytesInput, false);

  var hexStr = BitConverter.ToString(encryptArray).Replace("-", "");

  return hexStr.ToLower();

  }

  #endregion

  #region 公用函数

  ///

  /// 将字节转换成16进制数字

  ///

  /// 字节数组

  ///

  public static string Bytes2Hex(byte[] bytes)

  {

  var buffer = new StringBuilder();

  foreach (var t in bytes)

  {

  buffer.AppendFormat("{0:x2}", t);

  }

  return buffer.ToString();

  }

  ///

  /// 将16进制数组转换成字节

  ///

  /// 16进制数组

  ///

  ///

  public static byte[] Hex2Bytes(string input)

  {

  if (string.IsNullOrEmpty(input)) return null;

  var offset = input.Length%2;

  if (offset == 1) input = "0" + input;

  int i;

  var list = new List();

  for (i = 0; i < input.Length; i += 2)

  {

  var temp = input.Substring(i, 2);

  byte bv;

  var success = byte.TryParse(temp, NumberStyles.HexNumber, null, out bv);

  if (!success) throw new ArgumentOutOfRangeException();

  list.Add(bv);

  }

  return list.ToArray();

  }

  #endregion

  #region SHA1加密

  ///

  /// SHA1加密 使用缺省密钥给字符串加密

  ///

  ///

  ///

  public static string Sha1Encrypt(string sourceString)

  {

  var data = Encoding.Default.GetBytes(sourceString);

  HashAlgorithm sha = new SHA1CryptoServiceProvider();

  var bytes = sha.ComputeHash(data);

  return BitConverter.ToString(bytes).Replace("-", "");

  }

  #endregion

  #region DES加解密

  ///

  /// DES加密

  ///

  ///

  ///

  ///

  public static string DesEncrypt(string pubKey, string input)

  {

  var des = new DESCryptoServiceProvider();

  var bytes = Encoding.UTF8.GetBytes(input);

  des.Key = Encoding.ASCII.GetBytes(pubKey);

  des.IV = Encoding.ASCII.GetBytes(pubKey);

  using (var ms = new MemoryStream())

  {

  using (var cryptoStream = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))

  {

  cryptoStream.Write(bytes, 0, bytes.Length);

  cryptoStream.FlushFinalBlock();

  }

  var data = ms.ToArray();

  return BitConverter.ToString(data).Replace("-", "");

  }

  }

  ///

  /// DES解密

  ///

  ///

  ///

  ///

  public static string DesDecrypt(string pubKey, string input)

  {

  var des = new DESCryptoServiceProvider();

  var bytes = Hex2Bytes(input);

  des.Key = Encoding.ASCII.GetBytes(pubKey);

  des.IV = Encoding.ASCII.GetBytes(pubKey);

  using (var ms = new MemoryStream())

  {

  using (var cryptoStream = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write))

  {

  cryptoStream.Write(bytes, 0, bytes.Length);

  cryptoStream.FlushFinalBlock();

  }

  var data = ms.ToArray();

  return Encoding.UTF8.GetString(data);

  }

  }

  #endregion

  #region MD5加密

  ///

  /// MD5加密

  ///

  /// 输入

  ///

  public static string Md5Encrypt(string input)

  {

  MD5 md5 = new MD5CryptoServiceProvider();

  var data = Encoding.UTF8.GetBytes(input);

  var encs = md5.ComputeHash(data);

  return BitConverter.ToString(encs).Replace("-", "");

  }

  #endregion

  }