我应该将我的密码编码为什么?

时间:2010-08-23 23:38:36

标签: database encryption sha1

我从头开始创建一个新的ASP.Net应用程序。我应该用什么来编码密码以及我的专栏应该是什么?

只是一个简单的varchar(512)?谢谢你的任何建议。

5 个答案:

答案 0 :(得分:4)

我会使用.NET附带的Membership API。我相信它使用盐渍SHA1散列密码(和安全答案)。如果您仍想重新发明轮子,您仍然可以将其作为最佳实践的指南。

答案 1 :(得分:2)

好吧,如果你使用SHA1,你的哈希值只有48个字符,所以512就是矫枉过正。

我使用带有盐的SHA 256。

答案 2 :(得分:0)

请人们。

Encryption != Encoding != Hashing

这些是3个不同的术语,不应互换使用。

密码应为散列 salted ,绝不应加密,更不应编码。使用SHA作为哈希算法并记住也使用盐。这是避免彩虹表攻击的一个非常重要的对策。

此外,所有散列函数都将生成一个具有固定大小的输出(MD5为32个字符,SHA1为40个字符等),因此您不需要所有额外空间。

参考/读:

MSDN: SHA1 Class
Just hashing is far from enough

答案 3 :(得分:0)

FormsAuthentication命名空间有一个方便的方法,可用于散列密码以存储[在数据库中]。

正如其他人所说,请务必salt您的密码。

FormsAuthentication.HashPasswordForStoringInConfigFile(saltedPassword,“SHA1”)

答案 4 :(得分:-2)

我将查看System.Security.Cryptography命名空间并设计一种加密密码的方法。完成后,您只需查看加密密码的大小并相应地创建列。当然,请确保您没有丢失加密密钥。我还会在DEV中使用与PROD不同的密钥以增加安全性。有很多关于如何在.NET中执行此操作的教程(和代码)。

祝你好运!