gpt4 book ai didi

c# - 我如何在我的 ASP.Net 应用程序上使用 salting+hashing?

转载 作者:太空宇宙 更新时间:2023-11-03 11:42:25 24 4
gpt4 key购买 nike

我正在从头开始构建一个项目,我想以正确的方式做事™。我在网上阅读过有关哈希的内容,这基本上是将密码变成 64 个胡言乱语的字母,对吗?

加盐怎么样?

我的问题是:

  1. 如何使用 C# 对字符串进行哈希处理?
  2. MSSQL 中的字段声明类型是什么? nvarchar(64)?
  3. 什么是加盐,我需要将其保存在数据库中的某个位置吗?
  4. 如果我打算让人们使用 Facebook Connect,我是否需要担心创建哈希/salt?

代码示例优先。谢谢!

最佳答案

我将跳过问题 1,因为我不是 C# 人员。

问题三:

加盐是在散列之前将一串随机数据添加到密码中。盐是必不可少的,因为没有它们,攻击者就有可能预先生成 rainbow table。已知密码哈希值。加盐意味着彩虹表不能被预先构建,这意味着每个密码必须单独被暴力破解。

为每个密码生成一个新盐很重要。

盐值不是 secret 的,可以与哈希密码一起存储在您的数据库中。

生成和检查密码的伪代码如下:

generatePassword(String user, String password) {
String salt = generateRandomSalt();
String salted = salt + password;
String hash = hexEncode(hash(salted));
store(user, hash, salt);
}

checkPassword(String user, String testPassword) {
String salt = lookupSalt(user);
String salted = salt + testPassword;
String testHash = hexEncode(hash(salted));
return testHash.equals(lookupHash(user));
}

问题二:

数据库字段的长度取决于哈希算法。 SHA1 生成 160 位输出,因此如果采用十六进制编码,则为 40 个字符。一个好的经验法则是使用与哈希输出大小相同的盐,因此您将有两个 40 个字符的列:一个用于盐,一个用于哈希。

问题 4:

抱歉,不知道 Facebook Connect 是如何工作的。我希望其他两个答案对您有所帮助。

关于c# - 我如何在我的 ASP.Net 应用程序上使用 salting+hashing?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4404253/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com