生成方法

使用以下命令可以生成40位的随机密码:
openssl rand -bash64 30

原理解释

上面的命令为 openssl 随机生成 30 字节的二进制文件,但二进制文件对人类的读写不友好,所以采用 base64 编码方式对这 30 字节的随机文件进行编码,生成40位字符在A~Z,a~z,0~9,/,+,=范围的密码。

安全性分析

密码破解一般有两种方法:一是在密码字典撞库,密码字典通常收集了人类较常使用的密码,大部分是弱密码。二是穷举法,从简单到复杂,一个个密码去尝试。所以一个较安全的密码应该包括大小写,数字,特殊符号,8位以上。之所以有这样的“共识”,是这样的密码只够让大部分通过穷举法的破解者放弃努力。

40 位 base64 编码可以包括多少种可能?64^40 种!数字化简后为 2^240.

挑一个数字与之作比较。IPv6 地址数量最多有 2^128 个。号称地球上的每一粒沙子都可以分到一个 IPv6 地址。而 2^240 是 2^128 的 2^112 倍。所以 2^240 应该和银河系的沙子数相当了吧?是名符其实的天文数字!!

也就是说,要一次性猜中密码,相当于在银河系中能马上找到某粒沙子。这个机率太小太小,几乎不可能!要破解这个密码只能用量子计算机去穷举吧?你有量子计算机吗?(笑)

标签: none