Linux 上的密碼生成器:在命令行上生成隨機密碼

很多時候我們都面臨創建強密碼的問題。 不幸的是,人類並不善於把握機會,創建隨機密碼是當今考慮數據安全和隱私的最重要因素之一。

在本文中,我們將介紹如何創建生成真正隨機密碼的腳本。 字符的長度可以定制以滿足所有期望。

目錄

如何實現(偽)隨機性

在每個 Unix 設備上,都有許多文件用作偽隨機數生成器. Linux 中的文件之一是 /dev/urandom。 您可以繼續對文件運行 cat 命令,並查看在終端中創建的一些二進制輸出。

                      
cat /dev/urandom

                    
文件 /dev/urandom 中 cat 命令的二進制輸出

創建僅包含字母數字字符的隨機密碼

您可能會在終端窗口中看到一些隨機字符。 首先,我們必須過濾掉這種噪音,只允許字母數字字符。 我們使用 strings 命令來做到這一點。 我們還將結合使用 grep 命令以僅允許密碼中的某些字符。 這裡我們必須提到一個重要的區別,我們不能使用標準命令,我們必須使用 -a 標誌使其接受文本輸入。

                      
cat /dev/urandom | strings |grep -Eoa "[a-zA-Z0-9]*"

                    
過濾輸出以僅返回指定的字符

如果你運行上面的命令,你會看到只有字母數字字符出現在終端屏幕上。 所以我們的過濾按預期工作。

如果你還想出現@、$、%等特殊字符。 在您的密碼中,只需在正則表達式中添加這些字符,如下所示:

                      
cat /dev/urandom | strings | grep -Eoa "[[email protected]$%&_]*"

                    

密碼長度設置

我們現在將使用 head 命令設置密碼的長度,一旦達到所需的數量,它將停止輸出。 所以命令現在看起來像這樣:

                      
cat /dev/urandom | strings | grep -Eoa "[[email protected]$%&_]*" | head -n 10 

                    

這只是將文本剪切為 10 行而不是 10 個字符,但是它仍然有用,因為我們確信一行將包含至少一個字符(大多數情況下它們包含多個字符),因此在執行時使用此命令我們確保無論密碼是什麼,它至少有 10 個字符。

刪除換行符

現在我們需要刪除換行符,以便我們的密碼在一行中,我們使用 tr 命令執行此操作:

                      
cat /dev/urandom | strings | grep -Eoa "[[email protected]$%&_]*" | head -n 10 | tr -d 'n'

                    

此時,我們還要運行 cut 命令將密碼縮減為 10 個字符的最終長度:

                      
cat /dev/urandom | strings | grep -Eoa "[[email protected]$%&_]*" | head -n 10 | tr -d 'n'| cut -c1-10

                    
Nuestro bash one-liner para generar (pseudo)contraseñas aleatorias我們用於生成(偽)隨機密碼的 bash 單行代碼

結論

恭喜,您擁有自己的完全可定制的密碼生成器行。 您可以在密碼中使用您想要的任何字符集,並且您不必依靠人為猜測來創建強密碼。 我希望你喜歡這篇文章並感謝閱讀!

相關文章