linux - bash 生成没有特殊字符的安全密码

标签 linux bash security random passwords

我每天都有一个 bash 进程,每天都需要使用新密码。

为了避免处理特殊字符,我使用两个 $RANDOM 变量乘积的 MD5 生成密码:

md5sum <<< $(($RANDOM * $RANDOM))

我的想法是:因为 $RANDOM 生成一个介于 0 和 32,767 之间的随机整数,然后生成两个随机整数并将它们相乘将搜索空间增加到 32,767^2 = 1,071,711,169

我不是安全专家,所以我很好奇我的方法是否相当安全,如果不是,有什么更好的方法?

最佳答案

生成任意长度(比如 20 个字符)且仅包含字母数字字符的密码的安全方法是:

cat /dev/random | tr -dc '[:alnum:]' | head -c 20

如果 /dev/random 对您来说太慢了,下面的速度很快并且可能已经足够好了:

cat /dev/urandom | tr -dc '[:alnum:]' | head -c 20

这比 md5sum 有优势,因为 (a) 它使用所有字母字符,而不仅仅是 a-f,并且 (b) 它生成大写和小写。

有关安全性和 urandomrandom 的讨论,请参阅此帖子:"When to use /dev/random vs /dev/urandom" .

关于linux - bash 生成没有特殊字符的安全密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55659819/

相关文章:

linux - 在另一个比较中使用 bash 比较的结果

linux - 比较使用变量时 Awk 在 bash 脚本中不工作

linux - 有什么方法可以在 Linux 中查看字体的 PostScript 名称

.net - 所有者和用户 (WindowsIdentity) 之间有什么区别?

linux - keytool 错误 : java. lang.RuntimeException : Usage error, –storepass 不是合法命令

linux - 通过 Linux 命令查看所有已安装或未安装的存储设备中的可用空间?

c - 使用 exec 后将标准输出重定向到管道

bash - 如何检查 Bash 中是否存在某些文件?

objective-c - 访问 iCloud 钥匙串(keychain)中的所有密码

mysql - 覆盖 WHERE 子句中的列值?