当前位置: 首页 > 编程语言 > C#

使用SHA1在Sql Server 2008上加密密码分享

时间:2023-04-10 20:15:09 C#

C#学习教程:使用SHA1在SqlServer2008上加密密码我想加密存储在数据库中的密码。是否可以使用C#和SHA1算法来实现?下面是我的存储过程:ALTERprocedure[dbo].[proc_UserLogin]@useridvarchar(20),@passwordnvarchar(50)Asdeclare@ReturnValvarchar(500)SETNOCOUNT如果存在(从LoginManager选择用户ID、密码,其中用户ID=@用户ID和密码=@密码)设置@ReturnVal='0|成功登录'否则设置@ReturnVal='1|登录失败/用户名不存在'选择@ReturnValC#代码publicvoidbutton1_Click(objectsender,EventArgse){mainform=newForm1();串[]v;OleDbConnectionconn=newOleDbConnection("文件名=E:\Vivek\LicenseManager\LicenseManager\login.udl");尝试{conn.Open();stringquery="EXECdbo.proc_UserLogin'"+username.Text+"','"+password.Text+"'";OleDbCommandcmd=newOleDbCommand(query,conn);字符串s=Convert.ToString(cmd.ExecuteScalar());v=s.Split('|');如果(v[0]=="0"){mainform.Show();这个。隐藏();}else{MessageBox.Show("请输入正确的用户凭证并重试");}}赶上(除了在ex){MessageBox.Show(ex.Message);}conn.Close();我在这里遇到了其他用户提出的类似问题,但他们对我没有用任何人都可以建议更改代码以便它可以完成密码加密吗?感谢C#中的散列和加盐密码https://crackstation.net/hashing-security.htmhttps://www.bentasker.co.uk/blog/security/201-why-you-should-be-asking-how-your-passwords-are-stored正如我在评论中所说,散列密码是您可能不应该自己做的事情。需要注意的几件事:话虽这么说,要解决您的特定问题,您需要这样的东西:Users----userIdpasswordHashedpasswordHashed存储用户密码的散列版本(纯文本密码永远不会存储在Persistence中。)检查有效密码,如下所示:ALTERprocedure[dbo].[proc_UserLogin]@useridvarchar(20),@passwordnvarchar(50)Asdeclare@ReturnValvarchar(500)SETNOCOUNTONifexists(selectuserid,password来自LoginManager,其中userid=@useridandpassword=HASHBYTES('SHA1',@password))set@ReturnVal='0|LoggedinSuccessfully'elseset@ReturnVal='1|LoginFailed/Usernamedoesnotexist'select@ReturnVal要插入/更新用户密码,您需要确保存储散列密码而不是纯文本密码;INSERTINTOusers(userId,passwordHashed)VALUES(@userId,HASHBYTES('SHA1',@rawPassword)或UPDATEusersSETpasswordHased=HASHBYTES('SHA1',@rawPassword)WHEREuserId=@userId编辑:刚刚意识到你在问如何散列是在C#中完成的,而不是SQL。您可以执行以下操作(摘自HashingwiththeSHA1AlgorithminC#):返回Convert.ToBase64String(哈希);您的代码片段可能是:conn.Open();stringquery="EXECdbo.proc_UserLogin'"+username.Text+"','"+this.Hash(System.Text.Encoding.UTF8.GetBytes(password.Text))+"'";OleDbCommandcmd=newOleDbCommand(query,conn);您还应该注意,您应该将参数参数化为存储过程,而不是以您传递它们的方式-看起来您已经有一个单独的问题。以上就是C#学习教程:使用SHA1对SqlServer2008上的密码共享进行加密,如果对您有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: