无论什么时候只要我们使用数据库开发网站,我们就必须保护用户资料,这非常必要。
黑客可以盗窃口令,个人隐私遭到严重的破坏。最好的方法就是不储存原始密码,而是加密后再放到数据库中。
当我们想验证用户时,我们只需将用户输入的口令再次加密与数据库中的记录进行比较即可。
在asp中我们需要额外的对象加密。
但在Asp.Net中 SDK可以通过system.web.security namespace中的CookieAuthentication类的
HashPassWordForStoringInConfigFile方法来解决问题。
这样做的目的是加密配置文件的口令,甚至cookies.
HashPasswordForStoringInConfigFile方法非常容易使用,并且,它支持“SHA1”和“MD5”散列算法。
为了清楚“HashPasswordForStoringInConfigFile”方法,让我们制作一个小的ASP.NET页,把输入串在SHA1和MD5格式中译成密码。
<%@ Import Namespace="System.Web.Security" %>
<Html>
<head>
<script language="VB" runat=server>
Sub encryptString(Src As Object, E As EventArgs)
SHA1.Text = CookieAuthentication.HashPasswordForStoringInConfigFile(txtPassword.Text, "SHA1")
MD5.Text = CookieAuthentication.HashPasswordForStoringInConfigFile(txtPassword.Text, "MD5")
End Sub
</script>
</head>
<body>
<form runat=server>
<p><b>Original Clear Text Password: </b><br>
<asp:Textbox id="txtPassword" runat=server />
<asp:Button runat="server" text="Encrypt String" onClick="encryptString" /></p>
<p><b>Encrypted Password In SHA1: </b>
<asp:label id="SHA1" runat=server /></p>
<p><b>Encrypted Password In MD5: </b>
<asp:label id="MD5" runat=server /></p>
</form>
</body>
</html>
怎么样加密一串字符串是很容易的事,为了使它更容易使用我制作了一个函数。下面我就给出函数的源代码.
Function EncryptPassword (PasswordString as String, PasswordFormat as String) as String
If PasswordFormat = "SHA1" then
EncryptPassword = CookieAuthentication.HashPasswordForStoringInConfigFile(PasswordString, "SHA1")
Elseif PasswordFormat = "MD5" then
EncryptPassword= CookieAuthentication.HashPasswordForStoringInConfigFile(PasswordString, "MD5")
Else
EncryptPassword = ""
End if
End Function
Source:http://www.vipcn.com/InfoView/Article_10312.html
OLE DB 章节
分层行集或章节(OLE DB 类型 DBTYPE_HCHAPTER、ADO 类型 adChapter)可用于填充 DataSet 的内容。当 OleDbDataAdapter 在 Fill 操作过程中遇到章节列时,将为章节列创建一个 DataTable,并使用章节中的列和行填充该表。为章节列创建的表使用父表名称和章节列名称来命名,其形式为“ParentTableNameChapteredColumnName”。如果 DataSet 中已存在与章节列的名称相匹配的表,则将使用章节数据填充当前表。如果现有表中不存在与章节中的列相匹配的列,则将添加新列。
在使用章节列中的数据填充 DataSet 中的表之前,将创建分层行集的父表和子表之间的关系,方法是向父表和子表添加一个整数列,将父列设置为自动递增,然后使用两个表中所添加的列来创建 DataRelation。所添加的关系使用父表和章节列名称来命名,其形式为“ParentTableNameChapterColumnName”。
请注意,相关列仅存在于 DataSet 中。如果在随后从数据源进行填充,则将使新行被添加到表中,而不是使更改被并入现有行。
另请注意,如果使用采用 DataTable 的 DataAdapter.Fill 重载,则将只填充该表。仍会将自动递增整数列添加到该表中,但不会创建或填充任何子表并且不会创建任何关系。
以下示例使用 MSDataShape 提供程序为客户列表中的每个客户生成订单的章节列。然后使用相应数据来填充 DataSet。
Using connection As OleDbConnection = New OleDbConnection( _
"Provider=MSDataShape;Data Provider=SQLOLEDB;" & _
"Data Source=(local);Integrated " & _
"Security=SSPI;Initial Catalog=northwind")
Dim adapter As OleDbDataAdapter = New OleDbDataAdapter( _
"SHAPE {SELECT CustomerID, CompanyName FROM Customers} " & _
"APPEND ({SELECT CustomerID, OrderID FROM Orders} AS Orders " & _
"RELATE CustomerID TO CustomerID)", connection)
Dim customers As DataSet = New DataSet()
adapter.Fill(customers, "Customers")
End Using
当 Fill 操作完成时,DataSet 将包含两个表:Customers 和 CustomersOrders,其中 CustomersOrders 表示章节列。另外一个名为 Orders 的列被添加到 Customers 表中,另外一个名为 CustomersOrders 的列被添加到 CustomersOrders 表中。Customers 表中的 Orders 列设置为自动递增。DataRelation CustomersOrders 使用添加到以 Customers 作为父表的表中的列创建。下表显示了一些示例结果。
| CustomerID | CompanyName | Orders |
|---|---|---|
|
ALFKI |
Alfreds Futterkiste |
0 |
|
ANATR |
Ana Trujillo Emparedados y helados |
1 |
| CustomerID | OrderID | CustomersOrders |
|---|---|---|
|
ALFKI |
10643 |
0 |
|
ALFKI |
10692 |
0 |
|
ANATR |
10308 |
1 |
|
ANATR |
10625 |
1 |
http://msdn2.microsoft.com/zh-cn/library/bh8kx08z(VS.80).aspx

