西西软件园多重安全检测下载网站、值得信赖的软件下载站!
软件
软件
文章
搜索

首页编程开发C#.NET → C#里面如何对数据库里面的密码字段加密

C#里面如何对数据库里面的密码字段加密

相关软件相关文章发表评论 来源:本站整理时间:2010/11/30 22:41:33字体大小:A-A+

作者:佚名点击:802次评论:0次标签: 数据库 字段加密 MD5

  • 类型:学生模板大小:3.7M语言:中文 评分:10.0
  • 标签:
立即下载

C#里面如何对数据库里面的密码字段加密?加密以后如何在在程序里面取值?

都是使用MD5加密,推荐一篇文档给你。有很详细的加密和解密方法,还有就是C#中有自带的加密和解密方法。随便你使用哪种。

为什么要解密呢?MD5是可以穷举破解,但是应用中不需要解密,要不然就不安全了。如果你要查找当前用户输入的密码是否正确,你加密一下去数据库里查询就可以了?

密码用md5加密保存到数据库,然后用户登录时你把他的密码在MD5加密一次跟数据库里面的比较就行了。

方法:

密码子段类型为binary(50)。应用System Security.Cryptography名称空间下的SHA1类的ComputeHash()方法将字符密码进行哈希散列运算转换为byte[]类型对象,保存入数据库。
//哈系散列转换
publicbyte[] getSaltedPassword(string password)
        {
            SHA1 sha1
=SHA1.Create();
//应用System.Text空间下的Unicode.GetBytes方法获得byte.
            byte[] bytePassword=sha1.ComputeHash(Encoding.Unicode.GetBytes(password));
           
return bytePassword;
        }
//数据存入,直接将byte[]保存入binary字段
publicint AccountRegister(string accountName,string password,string email)
        {
           
byte[] bytePassword =this.getSaltedPassword(password);
            SqlConnection myConnection
=new SqlConnection(this.GetConnStr);
            myConnection.Open();
            SqlCommand myCommand
=new SqlCommand("Account_Add",myConnection);
            myCommand.CommandType
=CommandType.StoredProcedure;
            SqlParameter prmAccountName
=myCommand.Parameters.Add(new SqlParameter("@AccountName",SqlDbType.VarChar,50));
            prmAccountName.Value
=accountName;
            SqlParameter prmPassword
=myCommand.Parameters.Add(new SqlParameter("@password",SqlDbType.Binary,50));
            prmPassword.Value
=bytePassword;
            SqlParameter prmEmail
=myCommand.Parameters.Add(new SqlParameter("@email",SqlDbType.VarChar,50));
            prmEmail.Value
=email;
           
int myInt=myCommand.ExecuteNonQuery();
            myCommand.Dispose();
            myConnection.Close();
           
return myInt;
        }
//密码比较。将字符密码转换为哈西散列后直接与数据库binary密码字段比较
publicint AccountVerify(string accountName,string password)
        {
           
byte[] bytePassword =this.getSaltedPassword(password);
            SqlConnection myConnection
=new SqlConnection(this.GetConnStr);
            myConnection.Open();
            SqlCommand myCommand
=new SqlCommand("Account_Check",myConnection);
            myCommand.CommandType
=CommandType.StoredProcedure;
            SqlParameter prmAccountName
=myCommand.Parameters.Add(new SqlParameter("@AccountName",SqlDbType.VarChar,50));
            prmAccountName.Value
=accountName;
            SqlParameter prmPassword
=myCommand.Parameters.Add(new SqlParameter("@password",SqlDbType.Binary,50));
            prmPassword.Value
=bytePassword;
            SqlParameter prmReturnValue
=myCommand.Parameters.Add(new SqlParameter("@Return_Value",SqlDbType.Int,4));
            prmReturnValue.Direction
=ParameterDirection.ReturnValue;
            myCommand.ExecuteNonQuery();
           
int accountID=(int)prmReturnValue.Value;
            myCommand.Dispose();
            myConnection.Close();
           
return accountID;
        }
//相关Store procedure
//登陆验证
CREATE PROCEDURE Account_Check @AccountName varchar(50),@Password binary(50)
AS
  Declare @AccountId
int
    Select @AccountId
= AccountID From Accounts
               Where accountName
=@accountname;
     If isnull(@AccountID,
0)=0    
        Select @AccountId
=-1--//账号错误!   
    Else
       Begin
           Select @accountID
=null
           Select @AccountId
= AccountID From Accounts
                       Where accountName
=@accountname and password=@password;
           If isnull(@AccountID,
0)=0
             Select @AccountID
=0; --//密码错误!     
      End 
Return @AccountID;
//用户增加
CREATE PROCEDURE Account_Add @accountName varchar(50),@password binary (50),@email varchar(50)
   AS
    insert into Accounts(accountName,password,email)
                values(@accountName,@password,@email);
   
return @@Error;

FormsAuthentication.HashPasswordForStoringInConfigFile(this.TextBox2.Text, "md5");//使用MD5加密

不解密就MD5,sha-1这类hash加密,解密的话,自己写加密算法。。。

    读书笔记
    (95)读书笔记
    书中自有黄金屋,书中自有颜如玉,我们总能从书中学习到很多意想不到的知识,看见不一样的风景。特别是在我们的学生时代,不仅是教科书,更要涉及各种各样的课外书籍,不仅要读,还要学会做读书笔记。我们读再多,不做读书笔记,没有读后感,也相当于白读,做读书笔记的过程就相当于仔细品读的过程,而不是一目十行的略读。本合集是由西西为大家整理的读书笔记合集,欢迎有需要的朋友前来下载。读书笔记怎么写读书笔记是人们在读书...更多>>

    相关评论

    阅读本文后您有什么感想? 已有人给出评价!

    • 8 喜欢喜欢
    • 3 顶
    • 1 难过难过
    • 5 囧
    • 3 围观围观
    • 2 无聊无聊

    热门评论

    最新评论

    发表评论 查看所有评论(0)

    昵称:
    表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲
    字数: 0/500 (您的评论需要经过审核才能显示)