首页 > 代码库 > 4.openssl passwd

4.openssl passwd

该伪命令用于生成加密的密码。

[root@xuexi tmp]# whatis passwd
passwd               (1)  - update users authentication tokens
passwd               (5)  - password file
passwd [sslpasswd]   (1ssl)  - compute password hashes

直接man passwd会得到修改用户密码的passwd命令帮助,而不是openssl passwd的帮助,所以man sslpasswd。

[root@xuexi tmp]# man sslpasswd
NAME
       passwd - compute password hashes

SYNOPSIS
       openssl passwd [-crypt] [-1] [-apr1] [-salt string] [-in file] [-stdin] [-noverify] [-quiet] [-table] {password}

使用openssl passwd支持3中加密算法方式:不指定算法时,默认使用-crypt。

-crypt:默认的。如果加盐(-salt)算密码,只取盐的前2位,2位后面的所有字符都忽略。

-1:基于MD5的算法代号。/etc/shadow文件中的密码算法代号为6,代表sha512,代号为5代表sha256。虽然sslpasswd不支持代号5和6,但还是可以使用-1得到密码,然后复制到/etc/shadow,这也是有效的。

-apr1:apache中使用的备选算法代号。

加密时还支持加入盐选项-salt来改变整个加密过程。

在命令行中直接输入要加密的密码password或者使用-salt时,将不需要交互确认,否则会交互确认密码。

[root@xuexi ~]# openssl passwd  ?/*交互式*/
Password: 
Verifying - Password: 
mPuBNpIYfjpew
[root@xuexi ~]# openssl passwd 123456;openssl passwd 123456  ?/*非交互*/
R7J9OiPEN5xUw
C1lvfmeMltEWw

由上面的测试可知,使用默认的-crypt加密的密码是随机的。但是加入盐后,如果密码一样,盐一样,那么加密结果一样。

[root@xuexi ~]# openssl passwd -salt xxx 123456;openssl passwd -salt xxx 123456

xxkVQ7YXT9yoE

xxkVQ7YXT9yoE

同时也看到了-crypt加密算法只取盐的前两位。

如果盐和密码任意一个不一样,加密结果都不一样。

[root@xuexi ~]# openssl passwd -salt xyx 123456;openssl passwd -salt xxx 123456

xyJkVhXGAZ8tM

xxkVQ7YXT9yoE

测试下MD5格式的加密算法。

[root@xuexi ~]# openssl passwd -1 -salt xxxx 123456;openssl passwd -1 -salt xxxx 123456

$1$xxxx$PineAlNyTqasdnANnnq6d.

$1$xxxx$PineAlNyTqasdnANnnq6d.

可以看出,结果比-crypt的算法更长了。盐的长度也不再限于2位了。但是盐相同,密码相同,结果还是会相同。

4.openssl passwd