11050-rfc2kuaq99i.png
有些人想知道什么是暴力,如果密码数据库搜索运行失败并且原始密码结构未知,是否有可能恢复密码。所以,我们回答这个问题。

那么,什么是暴力?
严格来说,暴力是使用特定符号对指定长度的所有可能密码进行串行搜索。在大多数情况下,密码由拉丁字母数字字符组成:即 0-9、az、AZ 的一组字符。有时人们会添加可以在键盘上输入的特殊字符: ~!@"#$% 等。通常,它是一组 80-95 个字符。

在暴力攻击中,我们首先对所有单字符密码进行排序,然后将接收到的哈希与参考哈希进行比较,以确定密码是否被发现:

0, 1, ... 9, a, b, ... z, A, B, …
如果没有适合的单字符密码,那么我们开始搜索所有双字符密码:

00, 01, ... 09, 0 a, ..., 0z, 0A , 0B, …
依此类推,直到找到丢失的密码。

用暴力攻击搜索了多少个变种
数学(或者更确切地说,组合数学)向我们展示了我们需要使用给定的字符集和给定的密码长度搜索多少个可能的密码:

C = m ^ n
其中m是可能的符号数,n是密码的长度。因此,我们得到下表可能的密码变体:

密码长度 变体数量(对于 95 个字符集)
1 95
2 95^2 = 9,025
3 95^3 = 857,375
4 95^4 = 81,450,625
5 95^5 = 7,737,809,375
6 95^6 = 735,091,890,625
7 95^7 = 69,833,729,609,375
8 95^8 = 6,634,204,312,890,625
9 95^9 = 630,249,409,724,609,375
10 95^10 = 59,873,693,923,837,890,625
如您所见,密码变体的数量呈指数增长,即使是 8 个字符的长度,它也变得可怕。而且您知道,现在建议密码为 12 个或更多字符……

如果您不知道密码长度(通常是这样),那么我们必须从 1 个符号长度开始搜索所有密码。要获得 95 个字符的密码变体总数,最大密码长度为 10 个字符,我们进行以下计算:

C = 95 + 95^2 + 95^3 + 95^4 + 95^5 + 95^6 + 95^7 + 95^8 + 95^9 + 95^10 = 60,510,648,114,517,017,120
大约有60 个 quintillion 变体,想想这个数字!即使在最强大的计算中心也会做几年的搜索!如果密码长度真的不超过 10 个字符,并且字符集限制为 95 个符号,它将暴力破解丢失的密码!

这就是为什么如果你不知道密码结构暴力是不可能的!
请注意,密码可能是多字节编码的(例如,使用西里尔字母、阿拉伯字母或字符的 UTF -8),因此 8 符号密码的长度实际上可能高达 32 个字节。

应用暴力攻击的唯一方法是事先确定密码结构。例如,如果您确定密码的长度为 8 个字符,并且仅包含英文字母的小写字母和 0 到 9 的数字,那么可能的变体总数将是:

C = 36^8 = 2,821,109,907,456
少于 3 万亿个变体是可以的,对于大多数类型的哈希来说,对于功能强大的计算机来说,这是一项完全可以解决的任务。

但请记住,如果您错误地告知密码结构,所有的工作都将是徒劳的:将找不到密码!例如,如果真实密码还包含给定集合之外的符号,或者它具有不同的长度——我们将无法在可能的给定变体中找到它。因此,只有在您确切知道密码结构是什么时才使用暴力破解!