art*_*sow 7 security passwords cracking
有一个不错的网站http://www.howsecureismypassword.net/,它决定了破解密码需要多长时间.
我想要的是实现这样的功能,所以我需要一个算法
Chr*_*lor 13
了解常见的密码攻击向量将让您了解如何计算这一点.当我们需要一个数字时,让我们假设台式计算机每秒可以检查40亿(4x10 9)个密码,这看起来是正确的.
重要的是要意识到攻击者很少试图破解您的密码.相反,他们将拥有大量帐户的用户ID,他们希望尝试尽可能多地破解它们.因此,他们花费大部分时间来破解简单的密码,而不是困扰密码.
尝试输入密码的用户ID.令人惊讶的是有多少人这样做.您的密码即刻可以破解.
这很简单.攻击者只需要保留一份(例如)正在使用的10 6个最常用密码的列表,并检查每个密码一次.这可以在一秒钟内完成.如果您的密码在最常见的密码列表中,那么它几乎可以立即被破解.
如果您的密码不在字典中,那么另一个选择是使用暴力.使用此方法破解密码所需的时间取决于(a)密码的长度,以及(b)包含密码的符号集.通用公式是
timeTaken = (sizeOfSymbolSet ^ passwordLength) / (4*10^9) # (seconds)
Run Code Online (Sandbox Code Playgroud)
例如,如果您的密码只包含小写字母,那么符号集的大小为26.这里列出了破解密码作为其长度函数所需的时间:
Length Time
4 0.1 millisecs
6 0.1 seconds
8 1 minute
10 10 hours
12 9 months
Run Code Online (Sandbox Code Playgroud)
如果您使用全部小写和大写字母,数字和符号,则符号集更接近100.破解密码需要相应的更长时间:
Length Time
4 25 millisecs
6 4 minutes
8 28 days
10 800 years
12 8 million years
Run Code Online (Sandbox Code Playgroud)
不过,不要过于自满!800万年的数字假设您随机选择12个字母,数字和符号作为您的密码,即您的密码是这样的
t8Qkx#rxZAM@
%Kuc;p8WHmFU
xDE!XE$rLGh4
KJdx2K8BS33K
HTaeCc&t46L;
Run Code Online (Sandbox Code Playgroud)
有多少人有这样的密码?
这依赖于独创性和蛮力的结合.它是前两种方法的混合,依赖于常见的"密码约定"而不是常用密码.
例如,许多人拥有"字典单词后跟数字"形式的密码.牛津英语词典中大约有2x10 5个单词,因此生成所有组合"词典后跟数字"大约有200万个不同的密码,可以在一秒钟内再次轻松检查.
其他常见的转义包括用类似的符号替换字符 - owith 0,lwith 1,awith @等等.一旦你有一个字典单词列表,生成所有这些替换是微不足道的.猜测一下,您可能会将列表的长度增加1000倍,这仍然可以在大约一秒钟内检查.
我的猜测是,该网站使用了一些或所有这些方法的组合来计算破解密码需要多长时间.