首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

Linux 命令行生成高強度隨機密碼:/dev/urandom、tr、fold 組合拳與 UUID 備選方案

     編輯:MySQL 綜合教學

方案一:/dev/urandom + tr + fold + head(推薦,批量、可控複雜度)

# 僅字母數字,長度 10,生成 10 個
cat /dev/urandom | LC_ALL=C tr -dc '[:alnum:]' | fold -w 10 | head -10
# 輸出示例:
Si1N9kUyuZ
ddzsRXFgxA
caDRBRT4Px
...

參數解析

組件作用
/dev/urandom非阻塞隨機數源(熵池不足不阻塞,適合腳本)
LC_ALL=C強制 C locale,避免多字節字符導致 tr 行為異常
tr -dc '[:alnum:]'刪除(-d)補集(-c),僅保留字母數字
fold -w 10固寬 10 字符換行
head -10取前 10 行

進階:含特殊符號的高強度密碼

cat /dev/urandom | LC_ALL=C tr -dc '[:graph:]' | fold -w 10 | head -10
# [:graph:] = 可見字符(含標點、符號),輸出示例:
y#@uDo.g-w
RP\oq.8?)e
2R~CCIsLPr
...

方案二:/proc/sys/kernel/random/uuid(單次、標準 UUID v4)

cat /proc/sys/kernel/random/uuid | tr -d '-'
# 輸出:d9d01c59d22f4ebbac16b759103f4fc6  (32 位十六進制)
  • 優點:內核級 CSPRNG、標準格式、無需管道組合。
  • 缺點:每次只能生成 1 個、固定 128 位、僅十六進制字符集。

方案三:OpenSSL(跨平台、可指定 Base64/Hex)

# Base64,長度 16 字節 → 24 字符
openssl rand -base64 16
# Hex,長度 16 字節 → 32 字符
openssl rand -hex 16

選型建議

場景推薦方案
批量生成測試賬號、API Key方案一 [:alnum:] 或 [:graph:]
需符合 RFC 4122 UUID 標準方案二 /proc/.../uuid
跨平台腳本(含 Windows Git Bash)方案三 openssl rand
嵌入式/極簡環境無 OpenSSL方案一(BusyBox 通常內建 tr/fold/head)

安全提醒:生產系統密鑰生成建議使用語言級 CSPRNG(如 Java SecureRandom、Python secrets、Go crypto/rand),而非依賴 Shell 管道。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved