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

[root@docker121 ssl]# man -f passwd
passwd (1) - update user's authentication tokens
passwd (5) - password file
passwd [sslpasswd] (1ssl) - compute password hashes

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

[root@docker121 ssl]# man sslpasswd

NAME
passwd - compute password hashes SYNOPSIS
openssl passwd [-crypt] [-1] [-apr1] [-salt string] [-in file] [-stdin] [-quiet] {password}

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

选项说明:

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

-1(数字):基于MD5的算法代号。

-apr1(数字):apache中使用的备选md5算法代号,不能和"-1"选项一起使用,因为apr1本身就默认了md5。htpasswd工具生成的身份验证密码就是此方法。

-salt:加密时加点盐,可以增加算法的复杂度。但加了盐会有副作用:盐相同,密码也相同,则加密的结果将一样

-in file:从文件中读取要计算的密码列表

-stdin:从标准输入中获取要输入的密码

-quiet:生成密码过程中不输出任何信息

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

[root@docker121 ssl]# openssl passwd 123456 ; openssl passwd 123456
cI9hPLPWdeMRg
OAgoiiA76fo4g
[root@docker121 ssl]# openssl passwd 123456 ; openssl passwd 123456
cttnI67rxMomg
7Irub1lTNn.5o

[root@docker121 ssl]# cat passwd.txt
123456
789012
[root@docker121 ssl]# openssl passwd -in passwd.txt
mju/5gHhG5b7w
r2q6WQyE5NXcw
[root@docker121 ssl]# openssl passwd -stdin
123456
jxtBZoaFt7Rg.
789012
sLeG431aG83Yk
^C

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

[root@docker121 ssl]# openssl passwd -salt 'xxx' 123456 ; openssl passwd -salt 'xxx' 123456
xxkVQ7YXT9yoE
xxkVQ7YXT9yoE
[root@docker121 ssl]# openssl passwd -salt 'xxx' 123456 ; openssl passwd -salt 'xxx' 123456
xxkVQ7YXT9yoE
xxkVQ7YXT9yoE

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

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

[root@docker121 ssl]# openssl passwd -salt 'xyz' 123456 ; openssl passwd -salt 'iyz' 123456
xyJkVhXGAZ8tM
iy/aU7U8gjKhM
[root@docker121 ssl]# openssl passwd -salt 'xyz' 123456 ; openssl passwd -salt 'iyz' 123456
xyJkVhXGAZ8tM
iy/aU7U8gjKhM

注意,默认的-crypt只取盐的前两位字符,所以只要盐的前两位一样,即使后面的不同,结果也是一样的

[root@docker121 ssl]# openssl passwd -salt 'xyz' 123456 ; openssl passwd -salt 'xyi' 123456
xyJkVhXGAZ8tM
xyJkVhXGAZ8tM
[root@docker121 ssl]# openssl passwd -salt 'xyz' 123456 ; openssl passwd -salt 'xyi' 123456
xyJkVhXGAZ8tM
xyJkVhXGAZ8tM

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

[root@docker121 ssl]# openssl passwd -1 123456;openssl passwd -1 123456
$1$qwG6UAbF$HUwE3itbolpNzpOqE4UZZ1
$1$gcypn016$ciVqzZaOy8LOv4Al3xrvh0
[root@docker121 ssl]# openssl passwd -1 123456;openssl passwd -1 123456
$1$xRqTfPTS$Q2JA/tpMDtYQEzEX9Yfew1
$1$fdiTu6j2$Z2xc5QC7EuDFAzVHPsa.y1

可见,结果比-crypt的算法更长了,且不加盐时,密码生成是随机的。

[root@docker121 ssl]# openssl passwd -salt '123456' -1 123456;openssl passwd -salt '123456' -1 123456
$1$123456$wOSEtcyiP2N/IfIl15W6Z0
$1$123456$wOSEtcyiP2N/IfIl15W6Z0
[root@docker121 ssl]# openssl passwd -salt '123456' -1 123456;openssl passwd -salt '123456' -1 123456
$1$123456$wOSEtcyiP2N/IfIl15W6Z0
$1$123456$wOSEtcyiP2N/IfIl15W6Z0

[root@docker121 ssl]# openssl passwd -salt '123456' -1 123456;openssl passwd -salt '1209876' -1 123456

$1$123456$wOSEtcyiP2N/IfIl15W6Z0
$1$1209876$GJmkZ/OwcEoeZR89FzlEv1
[root@docker121 ssl]# openssl passwd -salt '123456' -1 123456;openssl passwd -salt '1209876' -1 123456
$1$123456$wOSEtcyiP2N/IfIl15W6Z0
$1$1209876$GJmkZ/OwcEoeZR89FzlEv1

可以看出,加了盐虽然复杂度增加了,但是也受到了"盐相同,密码也相同,则加密结果相同"的限制。另外,盐的长度也不再限于2位了

为apache或nginx生成访问网页时身份验证的密码,即basic authentication验证方式的密码

[root@docker121 ssl]# openssl passwd -apr1 123456 ; openssl passwd -apr1 123456
$apr1$2ZEGpQsF$H7SuFQ4oJWVwYs5LvLIcU.
$apr1$9d9t1fgp$zbeIA4UVr/EhSChtwsL6h0
[root@docker121 ssl]# openssl passwd -apr1 123456 ; openssl passwd -apr1 123456
$apr1$bcZWZQUI$cgdNODstfq42jDinEj7dC.
$apr1$gk2wGWj8$cL1IPa7zPZmo1XGimILul/
[root@docker121 ssl]# openssl passwd -salt '123456' -apr1 123456 ; openssl passwd -salt '123456' -apr1 123456
$apr1$123456$xBTbgHoSq0NxRYGC1cF.3/
$apr1$123456$xBTbgHoSq0NxRYGC1cF.3/
[root@docker121 ssl]# openssl passwd -salt '123456' -apr1 123456 ; openssl passwd -salt '123456' -apr1 123456
$apr1$123456$xBTbgHoSq0NxRYGC1cF.3/
$apr1$123456$xBTbgHoSq0NxRYGC1cF.3/
[root@docker121 ssl]# openssl passwd -salt '123456' -apr1 123456 ; openssl passwd -salt '1234567' -apr1 123456
$apr1$123456$xBTbgHoSq0NxRYGC1cF.3/
$apr1$1234567$puqjuzZs3GaBxhhbHpKW3.
[root@docker121 ssl]# openssl passwd -salt '123456' -apr1 123456 ; openssl passwd -salt '1234567' -apr1 123456
$apr1$123456$xBTbgHoSq0NxRYGC1cF.3/
$apr1$1234567$puqjuzZs3GaBxhhbHpKW3.

 

同样,加了盐就受到"盐相同,密码也相同,则加密结果相同"的限制

关于openssl passwd文件,它生成的密码可以直接复制到/etc/shadow文件中,但openssl passwd因为不支持sha512,所以密码强度不够。如果要生成sha512的密码,可以使用grub-crypt生成,它是一个python脚本,只不过很不幸CentOS 7只有grub2,grub-crypt命令已经没有了。

[root@docker122 ssl] grub-crypt --sha-512
Password:
Retype password:
$6$6LkICyGaDXQE/zu8$skC4qgnVLRAy6N1eEU0OrfVvRRaAkEQv/5Jz5znO5WLmMa.QBW2zS76TBcEa1boP4otQsMEm.XScx0316n11Q/

centos 7.x上可以使用python语句简单地代替grub-crypt,下面的python语句都是交互式的。

python -c 'import crypt,getpass;pw=getpass.getpass();print(crypt.crypt(pw) if (pw==getpass.getpass("Confirm: ")) else exit())'

如果要非交互式,使用下面python语句:

python -c 'import crypt,getpass;pw="123456";print(crypt.crypt(pw))'

(6) openssl passwd(生成加密的密码)的更多相关文章

  1. 4.openssl passwd

    该伪命令用于生成加密的密码. [root@xuexi tmp]# whatis passwd ) - update user's authentication tokens ) - password ...

  2. openssl passwd

    openssl系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 该伪命令用于生成加密的密码. [root@xuexi tmp]# whati ...

  3. Apache Htpasswd生成和验证密码

    Assuming you create the password using the following command and "myPassword" as the passw ...

  4. (转)linux passwd批量修改用户密码

    linux passwd批量修改用户密码  原文:http://blog.csdn.net/xuwuhao/article/details/46618913 对系统定期修改密码是一个很重要的安全常识, ...

  5. linux passwd批量修改用户密码

    linux passwd批量修改用户密码 对系统定期修改密码是一个很重要的安全常识,通常,我们修改用户密码都使用 passwd user 这样的命令来修改密码,但是这样会进入交互模式,即使使用脚本也不 ...

  6. 利用openssl进行RSA加密解密

    openssl是一个功能强大的工具包,它集成了众多密码算法及实用工具.我们即可以利用它提供的命令台工具生成密钥.证书来加密解密文件,也可以在利用其提供的API接口在代码中对传输信息进行加密. RSA是 ...

  7. openssl req(生成证书请求和自建CA)

    伪命令req大致有3个功能:生成证书请求文件.验证证书请求文件和创建根CA.由于openssl req命令选项较多,所以先各举几个例子,再集中给出openssl req的选项说明.若已熟悉openss ...

  8. openssl enc(对称加密)

    openssl系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 对称加密工具.了解对称加密的原理后就很简单了,原理部分见下文. openss ...

  9. [svc]openssl对称非对称加密实战

    OpenSSL进行aes加密解密-对称加密(symmetry) 建立文件test.txt, 特意写入中英文 # cd /tmp # echo "test测试" > test. ...

随机推荐

  1. 黑客攻防技术宝典web实战篇:核心防御机制习题

    猫宁!!! 参考链接:http://www.ituring.com.cn/book/885 黑客攻防技术宝典web实战篇是一本非常不错的书,它的著作人之一是burpsuite的作者,课后的习题值得关注 ...

  2. 笔记-JavaWeb学习之旅

    junit单元测试 黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值 白盒测试:需要些代码,关注程序具体的执行流程 Junit使用: 白盒测试 ​ 步骤: 定义一个测试类(测试用例) 定义 ...

  3. (九)SpringBoot整合redis框架

    二:添加Redis依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactI ...

  4. 连接php/mysql

    1 安装php5.6 首先确保mysql已安装 ./configure --prefix=/app/php-5.6.36 --with-mysql=mysqlnd --enable-mysqlnd - ...

  5. LightOj 1170 - Counting Perfect BST (折半枚举 + 卡特兰树)

    题目链接: http://www.lightoj.com/volume_showproblem.php?problem=1170 题目描述: 给出一些满足完美性质的一列数(x > 1 and y ...

  6. Chemistry in Berland CodeForces - 846E

    题目 题意: 有n种化学物质,第i种物质现有bi千克,需要ai千克.有n-1种,编号为2-n的转换方式,每种都为(x,k),第i行是编号为i+1的转换方式,编号为i的转换方式(xi,ki)表示ki千克 ...

  7. Database UVA - 1592

    对于每组数据,首先通过一个map将每个字符串由一个数字代替,相同的字符串由相同数字代替,不同的字符串由不同数字代替.那么题目就变为了询问是否存在行r1,r2以及列c1,c2使得str[r1][c1]= ...

  8. 147 Insertion Sort List 链表插入排序

    用插入排序对链表进行排序. 详见:https://leetcode.com/problems/insertion-sort-list/description/ Java实现: 链表的插入排序实现原理很 ...

  9. java中的compareto方法以及LIst列表排序的详细介绍【转】

    java中的compareto方法的详细介绍 javacompareTo  java中的compareto方法,返回参与比较的前后两个字符串的asc码的差值,看下面一组代码 String a=&quo ...

  10. js修改物理返回键功能

    preventBack: function(theurl){ var pushState = window.history.pushState; //点击物理返回键时,退出到跳转定义首页 if(pus ...