asp.net登陆与加密问题
问题是这样的,我有个登陆页面,要输入用户名和密码,密码是加密后与数据库中的密码比较,正确后进入另一页面/,
这是我的登陆代码:
SqlConnection myConnection;
myConnection=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings[ "conn_Default "]);
SqlCommand comm=new SqlCommand( "select s.userid,s.name,s.ns_code,s.station,c.* from staff s left outer join cust c on s.ns_code=c.clno where s.userid=@userid and s.passwd=@passwd ",myConnection);
myConnection.Open();
comm.Parameters.Add( "@userid ",SqlDbType.VarChar,10);
comm.Parameters.Add( "@passwd ",SqlDbType.VarChar,30);
comm.Parameters[ "@userid "].Value=userid.Text.Trim();
comm.Parameters[ "@passwd "].Value=passwd.Text.Trim();
if(comm.ExecuteReader().Read())
{
Response.Redirect ( "Admin_Index.aspx ");
}
下面是加密函数:
<SCRIPT LANGUAGE= "JavaScript ">
<!--
function Encrypt(s)
{
var k, tmp, tmpstr;
var key_S = "43,54,75,2,687,43,65,43,4,23,34,65,43,8,33,33,54,3 ";
key = key_S.split( ", ");
tmpstr = " ";
k = 0;
for(var j = 0; j < s.length; j++){
tmp = (s.charAt(j).charCodeAt() ^ key[k].valueOf(Number));
s_hex = tmp.toString(16);
while (s_hex.length <2){
s_hex = '0 ' + s_hex;
}
tmpstr = tmpstr + s_hex;
k++;
}
return tmpstr.toUpperCase();
}
//-->
</SCRIPT>
现在我不知道怎么来调用这个函数来实行对文本框中输入的密码加密,求各位了?
------解决方案--------------------在点击登录按钮时:
document.getElementById( "密码框ID ").value=Encrypt(document.getElementById( "密码框ID ").value);
------解决方案--------------------document.getElementById( "密码框ID ").value=Encrypt(document.getElementById( "密码框ID ").value);
------解决方案--------------------document.getElementById( "密码框ID ").value=Encrypt(document.getElementById( "密码框ID ").value);
------解决方案--------------------document.getElementById( "密码框ID ").value=Encrypt(document.getElementById( "密码框ID ").value);
你用javascript加密很轻易就可以被破解了,还是用c#写加密吧。
------解决方案--------------------md5用的人是多,但不代表他就容易破解,实际上破解MD5目前还只能通过暴力运算。如果你还不放心的话那用SHA256好了。
我在一本专门讲加解密的书上看到过这样的论点:如果你不是一个数学天才的话,千万不要试图自己发明算法,不要以为规则是自己定的别人就解不了。