用ASP.NET加密口令(转)
2024-07-10 12:58:14
供稿:网友
用asp.net加密口令
每当我们要建立数据库驱动的个人化的web站点时,都必须要保护用户的数据。尽管黑客可以盗取个人的口令,然而更严重的问题是有人能够盗走整个数据库,然后立刻就是所有的口令。
原理
有一个好的做法是不将实际的口令存储在数据库中,而是存储它们加密后的版本。当我们需要对用户进行鉴定时,只是对用户的口令再进行加密,然后将它与系统中的加密口令进行比较即可。
在asp中,我们不得不借助外部对象来加密字符串。而.net sdk解决了这个问题,它在system.web.security 名称空间中的cookieauthentication类中提供了hashpasswordforstoringinconfigfile方法,这个方法的目的正如它的名字所提示的,就是要加密存储在配置文件甚至cookies中的口令。
例子
hashpasswordforstoringinconfigfile方法使用起来非常简单,它支持用于加密字符串的“sha1”和“md5”散列算法。为了看看“hashpasswordforstoringinconfigfile”方法的威力,让我们创建一个小小的asp.net页面,并且将字符串加密成sha1和md5格式。下面是这样的一个asp.net页面源代码:
<%@ import namespace="system.web.security" %>
<html>
<head>
<script language="vb" runat=server>
' this function encrypts the input string using the sha1 and md5
' encryption algorithms
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
在数据库应用程序中使用加密方法
每当你向数据库中增加一个用户记录时,都要使用这个函数来加密口令,并将这个口令作为加密过的字符串插入字符串中。当用户登录你的站点时,用这个函数对用户输入的口令进行加密,然后将它与从数据库中恢复的那个加密口令进行比较。