對稱加密 (Symmetric Encryption)
加密和解密者使用同一組 key (通常是一組字串),稱為對稱加密。
常用的演算法:DES, 3DES, Blowfish, RC2, RC4, RC5, IDEA, CAST5
對稱加密常用工具:
1. passwd
2. gpg
3. openssl
Linux 使用者密碼會隨機加上一組 salt ,再一起進行 md5 編碼,
# cat /etc/shadow
ishm:$1$gPNQzB85$3JFsC9XjabnpscIQz7HYa1:14322:0:99999:7:::
$1$gPNQzB85$ 這一段是加在密碼段的 salt 註解,可用 openssl 或 php 來演算出來:
# openssl passwd -1 -salt “gPNQzB85” “123456” (密碼是 123456)
$1$gPNQzB85$3JFsC9XjabnpscIQz7HYa1
-1 代表使用 MD5 演算法,用法可以用 – – help 查詢
# openssl passwd –help
Usage: passwd [options] [passwords] where options are -crypt standard Unix password algorithm (default) -1 MD5-based password algorithm -apr1 MD5-based password algorithm, Apache variant -salt string use provided salt -in file read passwords from file -stdin read passwords from stdin -noverify never verify when reading password from terminal -quiet no warnings -table format output as table -reverse switch table columns
使用 php 的函式來演算:
# php -r ‘echo crypt(“123456″,”\$1\$gPNQzB85\$”); echo “\n”;’
$1$gPNQzB85$3JFsC9XjabnpscIQz7HYa1
所以,Linux 驗證時,會將 salt 取出來,加到輸入的密碼上,再用同樣的方式對「salt + 密碼」進行加密,如果結果一樣,即代表密碼正確。