如何在 Linux 中建立強密碼?

如何在 Linux 中建立強密碼?

我想知道如何在 Linux 上建立強密碼(對於普通用戶和管理員用戶)以及是否有特定的程式可以做到這一點。

答案1

普世根是用於產生密碼的眾多程式之一

答案2

就我個人而言,我不喜歡使用密碼產生器,因為產生的密碼很難記住,但一種便攜式解決方案是使用/dev/urandom

建立不包含特殊字元的隨機密碼,長度為 10 個字元:

$ cat /dev/urandom | tr -dc 'a-zA-Z0-9' | head -c 10` 
dyxJRKldvp

其工作原理是從 /dev/urandom 中獲取字節,刪除不符合命令中指定模式的字節tr,並使用head.

建立包含特殊字元的隨機密碼,長度為 10 個字元:

$ cat /dev/urandom | tr -dc 'a-zA-Z0-9-_!@#$%^&*()_+{}|:<>?=' | fold -w 10 | grep -i '[!@#$%^&*()_+{}|:<>?=]' | head -n 1
MSF4wj@vP0

在刪除不需要的位元組後,這使用了一種略有不同的技術tr,因為其想法是強制它至少具有一個特殊字元。這是透過使用fold命令將行分成 10 組,然後使用 來grep僅獲取包含特殊字元的行來實現的。head然後取得第一個符合要求的密碼。

答案3

我幾年前寫了這個小腳本,從那時起就一直使用它。如果有什麼不同的話,那就是它是對 BASH 的一個有趣的濫用printf,並且使用了 BASH 的一個可愛的功能,不幸的是我很少在腳本中看到它:typeset

#!/usr/bin/env bash
# Released into public domain
# Aaron Bockover, 2005
# http://abock.org

typeset -i length; length=$1
typeset -i rounds; rounds=$2
[ $rounds -lt 1 ] && rounds=1
[ $length -lt 1 ] && {
    echo "Usage: $0 <length> [<rounds>]" 2>/dev/null; exit 1;
}
for ((i=0; i < $rounds; i++)); do
    for ((j=0; j < $length; j++)); do
        set=$(($RANDOM % 20))
        if   [ $set -le 6 ];  then o=65; l=26; # 35% uppercase
        elif [ $set -le 13 ]; then o=97; l=26; # 35% lowercase
        elif [ $set -le 17 ]; then o=48; l=10; # 20% numeric
        elif [ $set -le 18 ]; then o=58; l=7;  # 10% symbolic
        elif [ $set -le 19 ]; then o=33; l=15; fi
        ord=$(($o + $RANDOM % $l))
        printf \\$(($ord / 64 * 100 + $ord % 64 / 8 * 10 + $ord % 8))
    done
    echo
done

答案4

我還要添加KeePassX它讓您可以選擇使用系統熵來產生具有一些不錯功能的強密碼 - 所有這些都使用 GUI。它還為您提供了管理密碼並將其保存到加密檔案的選項。

KPX 密碼產生器介面如下所示:

在此輸入影像描述

相關內容