以下代码怎么修改才能增加MD5加密功能?请高手赐教!!
<%
If Request.QueryString("style")="chk" Then
user =Replace(Trim(Request.Form("user")),"'","''")
pass =Replace(Trim(Request.Form("pass")),"'","''")
new_pass=Replace(Trim(Request.Form("new_pass")),"'","''")
sql="select * from admin where admin='"&user&"' and password='"&pass&"' and admin='"&session("admin")&"'"
set rs=conn.execute(sql)
if rs.Bof Then
Response.Write("<script language=javascript>alert('密码错误!!!');history.back();</script>")
Response.End
End If
sql="update admin set password='"&new_pass&"' where admin='"&session("admin")&"'"
conn.execute(sql)
Response.Write("<script language=javascript>alert('更改密码成功!!!');location.replace('main.asp')</script>")
connclose()
End If
%>
參考答案:md5.asp的代码略掉了
把你的代码改为:
<!--#include file="md5.asp"-->
<%
……
pass =md5(Replace(Trim(Request.Form("pass")),"'","''"))
new_pass=md5(Replace(Trim(Request.Form("new_pass")),"'","''"))
……
ps1:用了md5,数据库中存的就是md5的密文了,所以你之间数据库中存的所有密码都换成密文。
ps2:Replace(Trim(Request.Form("user")),"'","''"),感觉怪怪的,为什么不在Trim做Replace呢?已经做了,为什么又要Replace?
补充:修改密码时提示密码错误,是因为你现在的数据库中的密码用的是明文,而我修改后的密码,读的要是密文才行。
这其中有个原因,用到md5加密,是要把数据库中的敏感信息转成密文保存,这样即使有人得到了数据库,也无法查看敏感信息。也正是因为md5的不可逆性质,在验证的时候无法从数据库中取得密码的明文,因此要取得表单数据,将其加密成密文,然后与数据库中的密文进行比较,以此方法验证。
pass =md5(Replace(Trim(Request.Form("pass")),"'","''"))是将你的表单转成密文。
sql="select * from admin where admin='"&user&"' and password='"&pass&"' and admin='"&session("admin")&"'"
是从数据库中取得密码(密文),与已经成为密文的pass进行比较。
你原来的数据库里面应该存的是明文密码,这样就成了明文与密文的比较。当然提示密码错误。
想办法把数据库中的密码全部改成密文吧