很多时候我们都会遇到创建强密码的问题。 不幸的是,人类不擅长偶然,创建随机密码是当今牢记数据安全和隐私的最重要因素之一。
在本文中,我们将介绍如何创建生成真正随机密码的脚本。 可以自定义字符长度以满足所有期望。
目录
如何实现(伪)随机性
在每个 Unix 设备中,都有许多文件用作 伪随机数生成器. Linux 中的文件之一是 /dev/urandom。 您可以继续对文件运行 cat 命令,并查看在终端上创建的一些二进制输出。
cat /dev/urandom
创建仅包含字母数字字符的随机密码
您可能会在终端窗口中看到一些随机字符。 我们必须首先过滤掉这种噪音,只允许字母数字字符。 我们通过使用 strings 命令来做到这一点。 我们还将结合使用 grep 命令,这样我们就可以只允许密码中包含某些字符。 在这里我们应该提到一个重要的区别,我们不能使用标准命令,我们必须使用 -a 标志以便它获取文本输入。
cat /dev/urandom | strings |grep -Eoa "[a-zA-Z0-9]*"
如果你运行上面的命令,你会看到只有字母数字字符才能进入终端屏幕。 所以我们的过滤按预期工作。
如果您还希望在密码中出现 @、$、% 等特殊字符,则只需在正则表达式中添加这些字符,如下所示:
cat /dev/urandom | strings | grep -Eoa "[a-zA-Z0-9@$%&_]*"
设置密码长度
现在我们将使用 head 命令设置密码的长度,一旦达到所需的数字,它将停止输出。 所以命令现在看起来像这样:
cat /dev/urandom | strings | grep -Eoa "[a-zA-Z0-9@$%&_]*" | head -n 10
这只会将文本剪切为 10 行而不是 10 个字符,但是,它仍然有用,因为我们确信一行将包含至少一个字符(通常它们包含多个字符),因此通过运行此命令我们保证无论密码长度至少为 10 个字符。
删除换行符
现在我们需要删除换行符,以便我们的密码在一行中,我们使用 tr 命令执行此操作:
cat /dev/urandom | strings | grep -Eoa "[a-zA-Z0-9@$%&_]*" | head -n 10 | tr -d 'n'
此时我们还要运行cut命令,将密码剪切成最终的10个字符长度:
cat /dev/urandom | strings | grep -Eoa "[a-zA-Z0-9@$%&_]*" | head -n 10 | tr -d 'n'| cut -c1-10

结论
祝贺您拥有自己的完全可定制的密码生成器。 您可以在密码中使用任何您想要的字符集,而不必依靠人为猜测来创建安全可靠的密码。 希望你们喜欢这篇文章,感谢阅读!