首页 > 编程 > .NET > 正文

用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

在数据库应用程序中使用加密方法

每当你向数据库中增加一个用户记录时,都要使用这个函数来加密口令,并将这个口令作为加密过的字符串插入字符串中。当用户登录你的站点时,用这个函数对用户输入的口令进行加密,然后将它与从数据库中恢复的那个加密口令进行比较。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表