每當我們要建立數據庫驅動的個人化的web站點時都必須要保護用戶的數據盡管黑客可以盜取個人的口令然而更嚴重的問題是有人能夠盜走整個數據庫然後立刻就是所有的口令
原理
有一個好的做法是不將實際的口令存儲在數據庫中而是存儲它們加密後的版本當我們需要對用戶進行鑒定時只是對用戶的口令再進行加密然後將它與系統中的加密口令進行比較即可
在ASP中我們不得不借助外部對象來加密字符串而NET SDK解決了這個問題它在SystemWebSecurity名稱空間中的FormsAuthentication類中提供了HashPasswordForStoringInConfigFile方法這個方法的目的正如它的名字所提示的就是要加密存儲在Form表單的口令
例子
HashPasswordForStoringInConfigFile方法使用起來非常簡單它支持用於加密字符串的SHA和MD散列算法為了看看HashPasswordForStoringInConfigFile方法的威力讓我們創建一個小小的ASPNET頁面並且將字符串加密成SHA和MD格式
下面是這樣的一個ASPNET頁面源代碼
ASPX文件
<%@ Page language=c# Codebehind=loginformaspxcs AutoEventWireup=false Inherits=konsonlogloginform %>
<!DOCTYPE HTML PUBLIC //WC//DTD HTML Transitional//EN >
<HTML>
<HEAD>
<title>loginform</title>
<meta name=GENERATOR Content=Microsoft Visual Studio >
<meta name=CODE_LANGUAGE Content=C#>
<meta name=vs_defaultClientScript content=JavaScript>
<meta name=vs_targetSchema content=>
</HEAD>
<body MS_POSITIONING=GridLayout>
<form id=loginform method=post runat=server>
<table >
<tr>
<td >登錄名</td>
<td><asp:TextBox id=userid runat=server Width=px></asp:TextBox></td>
</tr>
<tr>
<td >密碼</td>
<td><asp:TextBox id=pwd runat=server Width=px></asp:TextBox></td>
</tr>
<tr>
<td ><asp:Button id=login runat=server Text=登 錄></asp:Button></td>
<td><asp:Button ID=cancel Runat=server Text=取 消></asp:Button></td>
</tr>
</table>
</form>
</body>
</HTML>
Code Behind文件
using System;
using SystemCollections;
using SystemComponentModel;
using SystemData;
using SystemDrawing;
using SystemWeb;
using SystemWebSessionState;
using SystemWebUI;
using SystemWebUIWebControls;
using SystemWebUIHtmlControls;
using SystemWebSecurity;
namespace konsonlog
{
public class loginform : SystemWebUIPage
{
protected SystemWebUIWebControlsTextBox userid;
protected SystemWebUIWebControlsButton login;
protected SystemWebUIWebControlsButton cancel;
protected SystemWebUIWebControlsTextBox pwd;
string epwd;
private void Page_Load(object sender SystemEventArgs e)
{}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
InitializeComponent();
baseOnInit(e);
}
private void InitializeComponent()
{
thisloginClick += new SystemEventHandler(thislogin_Click);
thisLoad += new SystemEventHandler(thisPage_Load);
}
#endregion
private void login_Click(object sender SystemEventArgs e)
{
epwd=FormsAuthenticationHashPasswordForStoringInConfigFile(pwdText SHA);
//epwd=FormsAuthenticationHashPasswordForStoringInConfigFile(pwdText MD);
ResponseWrite(epwd);
}
}
}
上面的代碼中你只要把加密後的epwd串寫時數據庫就ok了
加密口令就是這麼簡單
From:http://tw.wingwit.com/Article/program/net/201311/13929.html