Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否有任何已知的技术来检查数据库中存储的密码强度?_C#_Sql_Sql Server - Fatal编程技术网

C# 是否有任何已知的技术来检查数据库中存储的密码强度?

C# 是否有任何已知的技术来检查数据库中存储的密码强度?,c#,sql,sql-server,C#,Sql,Sql Server,我正在寻找创建一个应用程序的方向,该应用程序只需根据标准和以下列表检查数据库中密码的强度: 我面临的问题是,密码已经被腌制和散列,我不知道如何比较和验证密码的强度。如果你的密码存储得可以接受,那么你在存储中能达到的最好效果就是使用该密码列表进行暴力尝试 也就是说,从BadPassword列表中获取密码,获取存储在该用户数据库中的salt,将其应用于您选择的密码,然后查看哈希是否匹配。基本上,您的性能将与用户计数*BadPassword计数成正比 根据你所说的“散列”的意思,使用类似SHA-1的东

我正在寻找创建一个应用程序的方向,该应用程序只需根据标准和以下列表检查数据库中密码的强度:


我面临的问题是,密码已经被腌制和散列,我不知道如何比较和验证密码的强度。

如果你的密码存储得可以接受,那么你在存储中能达到的最好效果就是使用该密码列表进行暴力尝试

也就是说,从BadPassword列表中获取密码,获取存储在该用户数据库中的salt,将其应用于您选择的密码,然后查看哈希是否匹配。基本上,您的性能将与
用户计数*BadPassword计数成正比

根据你所说的“散列”的意思,使用类似SHA-1的东西,你可能会进行大量的猜测。但是,如果你正在研究像BCrypt/Argon这样的严重问题,它是昂贵的


另一个想法是在下次登录时解决身份验证问题。此时,您将拥有原始密码。我会(在以后的登录上下文中)考虑使用一个像PWNDPASScript(或在您自己的系统中滚动数据集)的服务。由于凭证填充,即使在其他方面可以测量的好密码也可能是错误的选择。(想想其他暴露明文密码的被黑客攻击的服务。这不一定是常见的选择,但会出现在这些凭证填充攻击中)。

使用SALT将已知错误密码列表与数据库中的密码进行比较。不是安全专家,但是我相信你不能,因为密码已经被加密和散列了——你再也没有密码了。检查必须在用户创建密码时进行。除非你像@DourHighArch建议的那样找到一个与糟糕密码相匹配的salt。撇开Dour的(有效)评论,你不能。正如你所说,存储的不是实际密码-你无法从散列/salt中获取密码-只有当你手头有一个密码时才检查其有效性。你只能与常用密码字典进行蛮力比较,不能检查强度。我正在考虑对已知密码进行salt+散列版本的比较,但我不确定。我计划将上面github链接中的文件放在一个文件夹中,并对每一行进行散列,并与数据库中的密码进行比较。