对字符串进行SHA1和DES(加密,解密),加密和解密的类
2007-03-13 11:24
543 查看
using System;
using System.Text;
using System.IO;
using System.Security.Cryptography;
namespace StringSecurity
{
/// <summary>
/// 字符串加密解密类。
/// </summary>
public sealed class StringSecurity
{
private StringSecurity() { }
#region SHA1 加密
/// <summary>
/// 使用SHA1加密字符串。
/// </summary>
/// <param name="inputString">输入字符串。</param>
/// <returns>加密后的字符串。(40个字符)</returns>
public static string StringToSHA1Hash(string inputString)
{
SHA1CryptoServiceProvider sha1 = new SHA1CryptoServiceProvider();
byte[] encryptedBytes = sha1.ComputeHash(Encoding.ASCII.GetBytes(inputString));
StringBuilder sb = new StringBuilder();
for (int i = 0; i < encryptedBytes.Length; i++)
{
sb.AppendFormat("{0:x2}", encryptedBytes[i]);
}
return sb.ToString();
}
#endregion
#region DES 加密/解密
private static byte[] key = ASCIIEncoding.ASCII.GetBytes("caikelun");
private static byte[] iv = ASCIIEncoding.ASCII.GetBytes("12345678");
/// <summary>
/// DES加密。
/// </summary>
/// <param name="inputString">输入字符串。</param>
/// <returns>加密后的字符串。</returns>
public static string DESEncrypt(string inputString)
{
MemoryStream ms = null;
CryptoStream cs = null;
StreamWriter sw = null;
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
try
{
ms = new MemoryStream();
cs = new CryptoStream(ms, des.CreateEncryptor(key, iv), CryptoStreamMode.Write);
sw = new StreamWriter(cs);
sw.Write(inputString);
sw.Flush();
cs.FlushFinalBlock();
return Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length);
}
finally
{
if (sw != null) sw.Close();
if (cs != null) cs.Close();
if (ms != null) ms.Close();
}
}
/// <summary>
/// DES解密。
/// </summary>
/// <param name="inputString">输入字符串。</param>
/// <returns>解密后的字符串。</returns>
public static string DESDecrypt(string inputString)
{
MemoryStream ms = null;
CryptoStream cs = null;
StreamReader sr = null;
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
try
{
ms = new MemoryStream(Convert.FromBase64String(inputString));
cs = new CryptoStream(ms, des.CreateDecryptor(key, iv), CryptoStreamMode.Read);
sr = new StreamReader(cs);
return sr.ReadToEnd();
}
finally
{
if (sr != null) sr.Close();
if (cs != null) cs.Close();
if (ms != null) ms.Close();
}
}
#endregion
}
}
using System.Text;
using System.IO;
using System.Security.Cryptography;
namespace StringSecurity
{
/// <summary>
/// 字符串加密解密类。
/// </summary>
public sealed class StringSecurity
{
private StringSecurity() { }
#region SHA1 加密
/// <summary>
/// 使用SHA1加密字符串。
/// </summary>
/// <param name="inputString">输入字符串。</param>
/// <returns>加密后的字符串。(40个字符)</returns>
public static string StringToSHA1Hash(string inputString)
{
SHA1CryptoServiceProvider sha1 = new SHA1CryptoServiceProvider();
byte[] encryptedBytes = sha1.ComputeHash(Encoding.ASCII.GetBytes(inputString));
StringBuilder sb = new StringBuilder();
for (int i = 0; i < encryptedBytes.Length; i++)
{
sb.AppendFormat("{0:x2}", encryptedBytes[i]);
}
return sb.ToString();
}
#endregion
#region DES 加密/解密
private static byte[] key = ASCIIEncoding.ASCII.GetBytes("caikelun");
private static byte[] iv = ASCIIEncoding.ASCII.GetBytes("12345678");
/// <summary>
/// DES加密。
/// </summary>
/// <param name="inputString">输入字符串。</param>
/// <returns>加密后的字符串。</returns>
public static string DESEncrypt(string inputString)
{
MemoryStream ms = null;
CryptoStream cs = null;
StreamWriter sw = null;
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
try
{
ms = new MemoryStream();
cs = new CryptoStream(ms, des.CreateEncryptor(key, iv), CryptoStreamMode.Write);
sw = new StreamWriter(cs);
sw.Write(inputString);
sw.Flush();
cs.FlushFinalBlock();
return Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length);
}
finally
{
if (sw != null) sw.Close();
if (cs != null) cs.Close();
if (ms != null) ms.Close();
}
}
/// <summary>
/// DES解密。
/// </summary>
/// <param name="inputString">输入字符串。</param>
/// <returns>解密后的字符串。</returns>
public static string DESDecrypt(string inputString)
{
MemoryStream ms = null;
CryptoStream cs = null;
StreamReader sr = null;
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
try
{
ms = new MemoryStream(Convert.FromBase64String(inputString));
cs = new CryptoStream(ms, des.CreateDecryptor(key, iv), CryptoStreamMode.Read);
sr = new StreamReader(cs);
return sr.ReadToEnd();
}
finally
{
if (sr != null) sr.Close();
if (cs != null) cs.Close();
if (ms != null) ms.Close();
}
}
#endregion
}
}
相关文章推荐
- [导入]对字符串进行SHA1和DES(加密,解密),加密和解密的类
- NET实现RSA AES DES 字符串 加密解密以及SHA1 MD5加密
- 【叶子函数分享五十六】对字符串进行加密解密
- as3.0利用DES和AES对数据进行加密和解密并且与php端加密匹配!
- JAVA中使用RSA通过秘钥文件对字符串进行加密解密
- 如何对中文字符串 进行 sha1加密
- C#加密解密DES字符串<转>
- Java中对字符串进行加密和解密
- php使用openssl进行Rsa长数据加密(117)解密(128) 和 DES 加密解密
- Java中对字符串进行加密和解密
- java 利用HashMap对字符串进行加密和解密
- PHP使用DES进行加密与解密的方法详解
- 根据文本对输入的字符串进行加密解密操作
- 【转】asp.net(c#)加密解密算法之sha1、md5、des、aes实现源码详解
- flex与webService公用DES能够进行统一的加密解密
- Java中对字符串进行加密和解密(转)
- PHP使用DES进行加密和解密
- C#中使用进制转换思想对字符串进行任意进制任意字典的加密和解密
- 【Java】通过DES加密和解密工具,对字符串进行加密和解密操作