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

如何在C#.NET中保存密码?分享

时间:2023-04-10 18:29:48 C#

C#.NET中如何保存密码?我正在制作一个C#.NET应用程序,我在其中设计了一个管理员帐户。现在要登录该帐户,管理员必须输入密码。我的问题是:如何保存该密码?可能的选项:全局变量(显然不正确,因为每次运行应用程序时它都会重置为默认值)数据库关系(有效,但它只是一个标量关系......)我不想将它存储在标量关系中,因为我觉得只用一个条目和一个列的关系是愚蠢的!还有其他存储密码的最佳方法吗?您可以将其存储在用户设置文件中并对其进行哈希处理。您可以访问默认设置文件:privateboolCheckPassword(stringsalt,stringpassword){varhash=Encoding.ASCII.GetBytes(salt+password);varsha1=newSHA1CryptoServiceProvider();varsha1hash=sha1.ComputeHash(散列);varhashedPassword=ASCIIEncoding.GetString(sha1hash);返回(Properties.Settings.Default.adminPass==hashedPassword);出于安全原因,我建议您只存储密码的哈希值,而不是明文密码。您可以将其存储在您认为方便的任何持久性介质中:文件注册表、数据库……您的系统中是否有数据库?把它放在那里。您可能有一个用户表可以扩展以容纳密码(?)如果没有,您可以将它存储在一个文件中。真正重要的是您不应该以明文形式存储密码。这是糟糕的安全做法。您应该使用一种良好的散列算法(例如SHA512)对其进行单向散列,最好使用盐。假设这是在服务器上持久保存用户的凭据:将密码的哈希值存储在数据库中。理想情况下,您应该计算并存储类似SALT+sha1(SALT+password)的内容,其中SALT是为每个存储的密码计算的随机字符串。除了每个人都在谈论不存储明文密码之外,您不应该在字符串中使用明文密码(例如,从文本框中获取值时)。这是因为字符串可以在内存中保留一段未知的、不受控制的时间。它们应该使用SecureString存储。以解释的方式:System.String类的实例是不可变的,当不再需要时不能以编程方式安排垃圾回收;也就是说,实例在创建后是只读的,无法预测它们何时会从计算机内存中删除实例。因此,如果String对象包含密码、信用卡号或个人数据等敏感信息,则该信息可能会在使用后泄露,因为您的应用程序无法从计算机内存中删除该数据。以上是C#学习教程:如何在C#.NET中保存密码?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: