OpenSSL 是強大的命令列密碼工具箱。本文透過實例示範 Base64 編解碼、檔案完整性校驗(SHA1/MD5)、對稱加密(AES-128-CBC/Blowfish)、隨機密碼產生與 Unix 密碼雜湊等常見操作。
# 編碼
openssl base64 -in filename.bin -out filename.txt
# 解碼
openssl base64 -d -in filename.txt -out filename.bin
跨平台建議使用 openssl sha1 或 openssl md5,避免各平台 sha1sum 行為差異。
openssl sha1 filename
# SHA1(filename)= e83a42b9bc8431a6645099be50b6341a35d3dceb
openssl md5 filename
# MD5(filename)= 26e9855f8ad6a5906fea121283c729c4
推薦使用 aes-128-cbc 或 bf (Blowfish);已淘汰的 DES、RC4-40 不建議使用。
# 加密
openssl enc -aes-128-cbc -in filename -out filename.aes-128-cbc
# 解密
openssl enc -d -aes-128-cbc -in filename.aes-128-cbc -out filename
執行時會提示輸入兩次加密密碼。
# 產生 15 位元組隨機序列並 Base64 編碼(輸出 20 字元)
openssl rand 15 -base64
# 範例輸出:s69mj+8ToN2p3Z1KESBG
為避免管理員直接知道明文密碼,建議由使用者自行產生密碼雜湊後交給管理員:
# 產生 SHA-512 crypt 雜湊(現代 Linux 通用)
openssl passwd -6 's69mj+8ToN2p3Z1KESBG'
# 輸出範例:$6$Rp/btEwK$qhUGFlsIpDtNT1I9MD/Gg1...
管理員收集各用戶的 username:$6$... 寫入檔案(如 newpassword),再以 chpasswd --encrypted < newpassword 批次匯入。
舊版 Unix 可用 openssl passwd -1 產生 MD5 crypt,或無參數互動式輸入。
OpenSSL 指令涵蓋編碼、雜湊、加密、密碼管理等核心場景,熟練這些操作能大幅提升 Linux 環境下的資安處理效率。