asp.net 数据加密-asp.net关注
2011-05-24 13:04
253 查看
SHA-1 和 MD5 加密算法均属于不可逆算法,
SHA-1基于MD5,MD5又基于MD4。
SHA-1比MD5多32位密文,所以更安全。由于同样的原因,MD5比SHA-1的运算速度更快。
1. 使用md5 加密,无密钥加密
using System.Security.Cryptography;
using System.Text;
return MD5.Create().ComputeHash(Encoding.UTF8.GetBytes(password))
.Aggregate(string.Empty, (seed, item) => seed + item.ToString("X"));
或者
return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(code, "MD5").ToLower();
2.SHA1的全称是Secure Hash Algorithm(安全哈希算法)
return SHA1.Create().ComputeHash(Encoding.UTF8.GetBytes(password))
.Aggregate(string.Empty, (seed, item) => seed + item.ToString("X"));
return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(code, "SHA1").ToLower();
3.DES 加密和解密
#region DESEncrypt DES加密
// <summary>
/// 进行DES加密。
/// </summary>
/// <param name="pToEncrypt">要加密的字符串。</param>
/// <param name="sKey">密钥,且必须为8位。</param>
/// <returns>以Base64格式返回的加密字符串。</returns>
public string DESEncrypt(string pToEncrypt, string sKey)
{
using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
{
byte[] inputByteArray = Encoding.UTF8.GetBytes(pToEncrypt);
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
System.IO.MemoryStream ms = new System.IO.MemoryStream();
using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))
{
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
cs.Close();
}
string str = Convert.ToBase64String(ms.ToArray());
ms.Close();
return str;
}
}
#endregion
#region DESDecrypt DES解密
/// <summary>
/// 进行DES解密。
/// </summary>
/// <param name="pToDecrypt">要解密的以Base64</param>
/// <param name="sKey">密钥,且必须为8位。</param>
/// <returns>已解密的字符串。</returns>
public string DESDecrypt(string pToDecrypt, string sKey)
{
byte[] inputByteArray = Convert.FromBase64String(pToDecrypt);
using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
{
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
System.IO.MemoryStream ms = new System.IO.MemoryStream();
using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write))
{
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
cs.Close();
}
string str = Encoding.UTF8.GetString(ms.ToArray());
ms.Close();
return str;
}
}
#endregion
SHA-1基于MD5,MD5又基于MD4。
SHA-1比MD5多32位密文,所以更安全。由于同样的原因,MD5比SHA-1的运算速度更快。
1. 使用md5 加密,无密钥加密
using System.Security.Cryptography;
using System.Text;
return MD5.Create().ComputeHash(Encoding.UTF8.GetBytes(password))
.Aggregate(string.Empty, (seed, item) => seed + item.ToString("X"));
或者
return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(code, "MD5").ToLower();
2.SHA1的全称是Secure Hash Algorithm(安全哈希算法)
return SHA1.Create().ComputeHash(Encoding.UTF8.GetBytes(password))
.Aggregate(string.Empty, (seed, item) => seed + item.ToString("X"));
return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(code, "SHA1").ToLower();
3.DES 加密和解密
#region DESEncrypt DES加密
// <summary>
/// 进行DES加密。
/// </summary>
/// <param name="pToEncrypt">要加密的字符串。</param>
/// <param name="sKey">密钥,且必须为8位。</param>
/// <returns>以Base64格式返回的加密字符串。</returns>
public string DESEncrypt(string pToEncrypt, string sKey)
{
using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
{
byte[] inputByteArray = Encoding.UTF8.GetBytes(pToEncrypt);
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
System.IO.MemoryStream ms = new System.IO.MemoryStream();
using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))
{
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
cs.Close();
}
string str = Convert.ToBase64String(ms.ToArray());
ms.Close();
return str;
}
}
#endregion
#region DESDecrypt DES解密
/// <summary>
/// 进行DES解密。
/// </summary>
/// <param name="pToDecrypt">要解密的以Base64</param>
/// <param name="sKey">密钥,且必须为8位。</param>
/// <returns>已解密的字符串。</returns>
public string DESDecrypt(string pToDecrypt, string sKey)
{
byte[] inputByteArray = Convert.FromBase64String(pToDecrypt);
using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
{
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
System.IO.MemoryStream ms = new System.IO.MemoryStream();
using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write))
{
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
cs.Close();
}
string str = Encoding.UTF8.GetString(ms.ToArray());
ms.Close();
return str;
}
}
#endregion
相关文章推荐
- 两种加密技术共同构建安全的ASP.NET数据访问
- 如何加密ASP.NET配置数据
- 在winform中进行RSA加密,在asp.net site中解密 "不正确的数据”
- asp.net Repeater嵌套数据绑定解决方案 源代码-asp.net关注
- ASP.NET 加密 Part.4(加密数据库中的敏感数据)
- 用ASP.NET加密Cookie数据
- 用ASP.NET加密Cookie数据
- 那些年朋友劝,该知道的ASP.NET -如何加密ASP.NET配置数据
- 在asp.net中使用加密数据库联接字符串保证数据安全
- 用ASP.NET加密Cookie数据
- Asp.net Cookie 敏感数据加密
- ASP.NET----编解码的静态类实现数据的加密
- 两种加密技术共同构建安全的ASP.NET数据访问
- 如何加密ASP.NET配置数据[]
- 如何用ASP.NET加密Cookie数据过程分析
- [转载]如何加密ASP.NET配置数据[]
- aspnetdb.mdf数据字典-asp.net关注
- ASP.NET C# 通过URL加密解密传输数据
- 用ASP.NET加密Cookie数据
- 在asp.net中使用加密数据库联接字符串保证数据安全