在 Linux 下 OpenSSL 本身并不能“查看”已经加密的密码明文,因为密码通常是单向哈希存储的(不可逆)。不过,根据不同场景,可以用 OpenSSL 做验证、解密或生成对比。下面按常见情况说明。
❌ 不能做的事
/etc/shadow 的密码哈希反推出明文.p12、.pem 私钥文件直接“看到”密码✅ 能做的事
sudo grep username /etc/shadow
示例:
username:$6$salt$hashvalue:....
说明:
$6$ → SHA-512salt → 盐值hashvalue → 密码哈希⚠️ 无法反解
openssl passwd -6 -salt saltvalue 密码
示例:
openssl passwd -6 -salt abc123 mypassword
输出与 /etc/shadow 中对比是否一致。
openssl enc -d -aes-256-cbc -in file.enc -out file.txt
会提示输入密码:
enter aes-256-cbc decryption password:
✅ 如果密码正确,就能解密
❌ 密码错误则失败
file file.enc
openssl enc -ciphers
openssl rsa -in key.pem -check
如果提示输入密码,说明私钥是加密的。
解密私钥:
openssl rsa -in encrypted.key -out decrypted.key
openssl x509 -in cert.pem -noout -text
openssl s_client -connect example.com:443
| 场景 | 能否查看密码 | 正确做法 |
|---|---|---|
| Linux 用户密码 | ❌ | 验证哈希 |
| OpenSSL 加密文件 | ❌ | 用密码解密 |
| 私钥密码 | ❌ | 解密私钥 |
| 证书 | ✅ | 直接查看 |
| 验证密码 | ✅ | openssl passwd |
你可以直接贴(打码后)的内容,比如:
/etc/shadow 一行openssl enc 命令我可以具体告诉你该用哪条命令、怎么操作。