【问题标题】:C# MD5 and or other encryption oledb (access 2007)C# MD5 和/或其他加密 oledb (access 2007)
【发布时间】:2013-04-28 10:48:09
【问题描述】:

对加密和一些利弊进行了一些研究。我有一个非常有效的登录系统,它使用命令参数将用户信息传递给 sql 字符串,以尝试避免 sql 注入。然而,我的下一个目标是在创建密码时对密码进行加密,然后将其存储在数据库中。

我使用 C# 编程,使用 Visual Studio Ultimate 2010 和 Access 2007。

我不是在寻找一个直截了当的答案,虽然如果有人给我一个我不会抱怨,但如果有人能至少指出我正确的方向,那将非常感谢! :D

亲切的问候,尼克

【问题讨论】:

标签: c# visual-studio-2010 encryption ms-access-2007


【解决方案1】:

您应该考虑使用带盐的安全哈希算法 (SHA)。

在这种情况下,哈希算法的目的是存储代表用户密码的令牌。您实际上不会存储密码,理想情况下,您不应该能够以明文形式重新创建用户密码。

当您尝试登录时,您将通过相同的过程传递所提供的密码,并查看哈希值是否匹配。

【讨论】:

  • 感谢回复,sha-1 和 sha-256 有什么区别吗?我将假设 256 是转换为的位数??
  • 有很多可用的 SHA 版本。 SHA-1 是 160 位标准,有一些弱点。 SHA-256 是 SHA-2 标准的一部分。 en.wikipedia.org/wiki/Secure_Hash_Algorithm 有一个很好的概述。重要的是要记住,安全性真的很难做到正确,如果您对它不满意,并且如果您正在尝试保护重要数据,您确实需要花一些时间做一些研究。 twit 网络上有一个名为 securitynow 的很棒的播客,其中有一些非常好的讨论。哦,是的,256 将反映哈希值的大小。
  • 哈希算法的选择在这里几乎无关紧要。在这种情况下,甚至没有对 MD5 的实际攻击。也没有理由使用大于 128 位的输出大小,无论选择散列。但是使用慢速/迭代方案很重要,而您没有提到这一点。
猜你喜欢
  • 2011-05-24
  • 2013-02-18
  • 1970-01-01
  • 1970-01-01
  • 2021-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多