在 /etc/shadow 內會紀錄每個人的 password hash value, 第一欄是名字, 第二欄就是 hash value
echen:$6$D3PHrOW9$tyD6jY830eKaz8ctBXZznSZ8MVdMq.f6VPmFdFSKfy6zNqJtDgNsNWYc42RyAS2VmRBekWN4S1gALcZM9wNbi1:15975:0:99999:7:::
hash value 的最前面的三碼代表演算法, $1$ 是 MD5, $5$ 是 SHA-256, $6$ 是 SHA-512
$ man crypt ID | Method ───────────────────────────────────────────────────────── 1 | MD5 2a | Blowfish (not in mainline glibc; added in some Linux distributions) 5 | SHA-256 (since glibc 2.7) 6 | SHA-512 (since glibc 2.7)
接下來8個 Character 代表 SALT 值, 我們會把 SALT 和 password 連結在一起去做 HASH, 而 SALT 是 random 產生的字串, 以這邊為例就是D3PHrOW9, 接下來的就是 hash 值
http://www.aychedee.com/2012/03/14/etc_shadow-password-hash-formats/
用以下的指令可以產生這個 hash 值, -m 接演算法, 再下來是要加密的 password, 最後是 Random 生出來的 SALT 值
mkpasswd -m sha-512 MyPAsSwOrD $(openssl rand -base64 16 | tr -d '+=' | head -c 16)
$ apg -Mcln -a1 -m16 r9yyTyMgAY5M9Lwv 0yo8zsFRL3TSnPzK ZwbnEPjmi3SBsa0e 6tiAxbCJWJPx2Z2X VAulxq6hevbirzTs jHCV7WBiA7CBVwrA $ openssl rand -base64 16 | tr -d '+=' L6VYvmgovdLScofodk7DPg $ </dev/urandom tr -dc '_A-Z-a-z-0-9!@#$%' | head -c16; echo "" LmzB!j4#ah_p8lm7