Store Password With SHA

Linux 下登陆密码通常经过哈希后保存在 shadow 文件里(Archlinx 默认是使用的 MD5)。王老湿在 04 年经证明了 MD5 可以产生碰撞 。但是这个并不表明 MD5 就不安全,但是使用一个目前来讲没有发现重大缺点的算法不是一种更好的选择吗?因此建议使用一种更安全的哈希算法:SHA。

# vi /etc/pam.d/passwd

password    required    pam_unix.so md5 shadow nullok
修改为
password    required    pam_unix.so sha512 shadow nullok rounds=65536

原先的 MD5 由 SHA512 代替,加上哈希的轮数 65536,也就是说每个密钥都要经过 65536 的哈希才有可能得到最终的结果。

# vi /etc/default/passwd

CRYPT=des
改成
CRYPT=sha512

# vi /etc/login.defs
ENCRYPT_METHOD=SHA512

修改完上述三个文件后,你的密码并不会自动的重新哈希!所以需要你人肉重新 passwd username 的设置密码。
要验证你的密码是否已经重新哈希,检查 /etc/shadow 这个文件,使用 sha256 的应该以 $5 开头,而 sha512 的应该以 $6 开头。
这个是不是能这样推断以 $1 开头的使用的 MD5?另外,Linux 不仅仅是使用一个哈希就完事了,它其实还加了 salt 的,详细的请点击这里

参考:
https://wiki.archlinux.org/index.php/SHA_Passwords