你的网站安全吗?别忘记了给自己的密码加密

      还记得前段时间CSDN账号密码泄露的事件吗,用户的密码没有经过任何的处理就直接保存到数据库了。这个看似不会有任何问题的操作,也被大多数程序员接受的做法,而就是因为这种做法,导致了账号被泄露。当然我自己也搞到了CSDN的数据,只是用于学习之用。

  而今天在公司看到同事写的一个项目,却刚刚有对密码进行md5加密,所有为了自己以后可以更好的学习,也为了博客园的朋友们一起成长,这里只是抱着一种分享的态度和大家一起成长。

好了废话不多说了,我们开始简单的MD5练习了。想学的跟着我的步伐吧……

首先我们要创建一个数据库表,这里我只是简单的创建了一个只有用户id,用户姓名,用户密码。当然你的话需要根据自己的需求添加字段。这里需要注意一点的是,我一开始把用户密码的长度设置为varchar(20)运行的时候报错了,最后改成了nvarchar(40)运行没有问题了。后来查看了一下加密后的密码的长度为32位的。这里只是提供参考。

create table myAdmin(
	uid int identity(1,1) not null,
	uname varchar(20) not null,
	upassword nvarchar(40) not null,
)

   数据库建好了,现在我们开始创建我们的项目了,开发的IDE是vs2008,做的是b/s。首先我们创建了一张MyStudyMD5的页面,然后拖两个textbox控件和一个button控件,为了简便这里的控件的设置为默认。然手双击页面上的button按钮,跳到c#的代码了,首先我们自己建一个MD5加密方法:

 protected string MD5(string str) {
        byte[] bytes = Encoding.ASCII.GetBytes(str);
        bytes = new MD5CryptoServiceProvider().ComputeHash(bytes);
        StringBuilder result = new StringBuilder();
        for (int i = 0; i < bytes.Length; i++) {
            result.Append(bytes[i].ToString("x2"));
        }
        return result.ToString();
    }

   然后我们在button事件中写方法,并调用这个加密的MD5。代码如下:

 protected void Button1_Click(object sender, EventArgs e)
    {
        string SqlStr = "INSERT INTO myAdmin(uname,upassword) values('"+TextBox1.Text.Trim()+"','"+MD5(TextBox2.Text.Trim())+"')";
        if (operateData.execSql(SqlStr)) {
            ClientScript.RegisterClientScriptBlock(this.GetType(), "注册成功", "<script>alert('注册成功')</script>");
        }
        //string SqlStr = "select upassword from myAdmin where uid=2";
        //string password = operateData.getTier(SqlStr);
        //ClientScript.RegisterClientScriptBlock(this.GetType(),"11","<script>alert('"+password.Length+"')</script>");
        
    }

  好了,MD5加密的过程已经结束了。当然方法不是我的,我只不过踩在前人的基础并取其精华。
  如果你有跟好的加密算法别忘记了和别人分享……因为分享也是一种快乐。

posted @ 2012-04-28 16:04  唯吴独尊  阅读(3113)  评论(22编辑  收藏  举报