当前位置:首页 > Asp.Net 加密示例

Asp.Net 加密示例

点击次数:1184  更新日期:2010-12-29
\n

SHA1算法的散列值大小为160位。一般的加密方式为
byte[] data=System.Text.Encoding.Unicode.GetBytes(source.ToCharArray());
System.Security.Cryptography.SHA1 sha=new System.Security.Cryptography.SHA1CryptoServiceProvider();
byte[] result=sha.ComputeHash(data);
使用SHA1对密码实现加密,需要使用以下的方法:
string EnPswdStr=System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(source, “MD5″);
或许有的人会问,既然都是采用SHA1方法加密,为什么对密码的加密就不能使用原方法呢?因为一般情况下SHA1方法加密出来的密码并不是常规字符,有些字符甚至无法显示出来,如果使用这样的字符作为密码,在存入数据库时有些字符会被处理掉,这样加密结果就会失真,在进行密码验证时就会出现无法预料的差错。而采用密码加密函数的话就避免了这一个问题,它加密出来的结果都是常规字符,在数据库进行存储和程序处理时不会失真。

下面是例子程序:
Default.aspx


\n

<%@ Page Language=”C#” AutoEventWireup=”true” CodeFile=”Default.aspx.cs” Inherits=”_Default” %>


\n

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>


\n

<html xmlns=”http://www.w3.org/1999/xhtml” >
<head runat=”server”>
<title>无标题页</title>
</head>
<body>
<form id=”form1″ runat=”server”>
<div>
<asp:Label ID=”Label1″ runat=”server”></asp:Label>
<br />
<br />
<asp:Label ID=”Label2″ runat=”server”></asp:Label>
<br />
<br />
<asp:TextBox ID=”TextBox1″ runat=”server”></asp:TextBox>
<br />
<input type=”submit” />
</div>
</form>
</body>
</html>

Default.aspx.cs


\n

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;


\n

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
//获取要加密的字段,并转化为byte[]数组
byte[] data = System.Text.Encoding.Unicode.GetBytes(TextBox1.Text.ToCharArray());
//建立加密服务
System.Security.Cryptography.SHA1 sha = new System.Security.Cryptography.SHA1CryptoServiceProvider();
//加密byte[]数组
byte[] result = sha.ComputeHash(data);
//将加密后的数组转化为字符串
string sResult = System.Text.Encoding.Unicode.GetString(result);
//显示出来
Label1.Text = “SHA1普通加密:” + sResult.ToString() + “<br/>”;
//作为密码方式加密
string EnPswdStr = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(TextBox1.Text.ToString(), “MD5″);
//显示出来
Label2.Text = “SHA1密码加密:” + EnPswdStr + “<br/>”;
}


\n

}
}

运行效果图:


输入22然后点加密:



\n

来源:xingyao的blog

\n