Appearance
Linux使用sha512和指定盐生成密码
由于一次非常神奇的需求(使用sha512和指定的盐对密码进行加密)的加固然后就有了这篇东西(
测试环境
Ubuntu 20.04 CentOS 7.9 先生成一个user=moe,passwd=moetest的用户
Linux密码的保存结构
众所周知,Linux的用户密码信息是存放在**/etc/shadow**文件中的。
[root@moe ~]# cat /etc/shadow
moe:$6$8q7ORxjl$iwlWRaRDLbZhgfaIABRXJ.GuDC66sWJdLux1B7j5J/Wbz.Xk8NlNXoht.YpSB7S83ZGfEVZlOb3OMXzVHQu9G0:19062:0:99999:7:::
每行信息被通过 : 划分为9个字段。每个字段的含义如下: 用户名:口令:最后一次修改时间:最小修改时间间隔:密码有效期:密码需要变更前的警告天数:密码过期后的宽限时间:账号失效时间:保留字段 其中,第二段又被 $ 划分为3个字段,格式为**$id$salt$密文** id字段是加密算法的代号:1为md5,5为SHA256,6为SHA512;盐(salt)是用于混淆明文的一段字符。 以上面的moe用户为例,可以看出使用了SHA512的加密算法,盐为8q7ORxjl。
使用openssl以上述要求生成口令对比:
[root@moe ~]# openssl passwd -6 -salt 8q7ORxjl moetest
$6$8q7ORxjl$iwlWRaRDLbZhgfaIABRXJ.GuDC66sWJdLux1B7j5J/Wbz.Xk8NlNXoht.YpSB7S83ZGfEVZlOb3OMXzVHQu9G0
可以发现完全一致,那就可以使用openssl来生成指定盐的口令了
使用openssl生成密码
openssl passwd -6 -salt [盐] [密码]
比如以[gooood]为盐,[moe]为密码,生成口令
[root@moe ~]# openssl11 passwd -6 -salt gooood moe
$6$gooood$S4HBrBr0.Mr4jvL1P6bwM8VHjCLsYLg1DzoWzSjPN4yP8n.aGTnBIO62/dHLs/Nu7cdqgJmZ.tHGnil1HlfTu1
然后把生成的口令替换/etc/shadow中对应的字段,再尝试登录,证明可行。