C# MD5 和/或其他加密 oledb (access 2007)

Posted

技术标签:

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

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

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

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

亲切的问候,尼克

【问题讨论】:

使用慢速(迭代)哈希和盐。单次迭代哈希很糟糕,即使它是 SHA-2。见How to securely hash passwords?。在 C# 中,最简单的解决方案是使用至少 10000 次迭代的 Rfc2898DeriveBytes。 【参考方案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 位的输出大小,无论选择散列。但是使用慢速/迭代方案很重要,而您没有提到这一点。

以上是关于C# MD5 和/或其他加密 oledb (access 2007)的主要内容,如果未能解决你的问题,请参考以下文章

说能说清楚C#md5和php md5加密技术的区别,以实例说明

C#中使用SHA1和MD5加密字符串

C#开发中常用加密解密方法解析

用C#实现MD5的加密(转载)

如何对MD5加密

C# 2005 Md5加密后 怎么跟 asp Md5加密不一样!