(6) openssl passwd(生成加密的密码)
该伪命令用于生成加密的密码
[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(生成加密的密码)的更多相关文章
- 4.openssl passwd
该伪命令用于生成加密的密码. [root@xuexi tmp]# whatis passwd ) - update user's authentication tokens ) - password ...
- openssl passwd
openssl系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 该伪命令用于生成加密的密码. [root@xuexi tmp]# whati ...
- Apache Htpasswd生成和验证密码
Assuming you create the password using the following command and "myPassword" as the passw ...
- (转)linux passwd批量修改用户密码
linux passwd批量修改用户密码 原文:http://blog.csdn.net/xuwuhao/article/details/46618913 对系统定期修改密码是一个很重要的安全常识, ...
- linux passwd批量修改用户密码
linux passwd批量修改用户密码 对系统定期修改密码是一个很重要的安全常识,通常,我们修改用户密码都使用 passwd user 这样的命令来修改密码,但是这样会进入交互模式,即使使用脚本也不 ...
- 利用openssl进行RSA加密解密
openssl是一个功能强大的工具包,它集成了众多密码算法及实用工具.我们即可以利用它提供的命令台工具生成密钥.证书来加密解密文件,也可以在利用其提供的API接口在代码中对传输信息进行加密. RSA是 ...
- openssl req(生成证书请求和自建CA)
伪命令req大致有3个功能:生成证书请求文件.验证证书请求文件和创建根CA.由于openssl req命令选项较多,所以先各举几个例子,再集中给出openssl req的选项说明.若已熟悉openss ...
- openssl enc(对称加密)
openssl系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 对称加密工具.了解对称加密的原理后就很简单了,原理部分见下文. openss ...
- [svc]openssl对称非对称加密实战
OpenSSL进行aes加密解密-对称加密(symmetry) 建立文件test.txt, 特意写入中英文 # cd /tmp # echo "test测试" > test. ...
随机推荐
- Luogu2261[CQOI2007]余数求和 【数论】By cellur925
题目传送门 省选题竟然送了这么多分,60分直接暴力算就行.(算了,07年的省选) 数学题嘛,通常我们需要把式子展开,然后寻找一些性质化简=w=. 展开式以及寻找规律的过程lyd老师讲的很清楚T_T,放 ...
- hud3371 Connect the Cities 简单最小生成树
//我看过Discuss说不能用克鲁斯卡尔因为有很多边 //但是只能用G++过,C++的确超时 #include <stdio.h> #include <string.h> # ...
- Qt样式表之一:Qt样式表和盒子模型介绍
一.Qt样式表介绍 Qt样式表是一个可以自定义部件外观的十分强大的机制,可以用来美化部件.Qt样式表的概念.术语和语法都受到了HTML的层叠样式表(Cascading Style Sheets, CS ...
- LightOj 1088 - Points in Segments (二分枚举)
题目链接: http://www.lightoj.com/volume_showproblem.php?problem=1088 题目描述: 给出一个n位数升序排列的数列,然后q个查询,每个查询问指定 ...
- Distance in Tree CodeForces - 161D
Distance in Tree CodeForces - 161D 题意:给一棵n个结点的树,任意两点之间的距离为1,现在有点u.v,且u与v的最短距离为k,求这样的点对(u,v)的个数((u,v) ...
- 记忆化搜索(DFS+DP) URAL 1223 Chernobyl’ Eagle on a Roof
题目传送门 /* 记忆化搜索(DFS+DP):dp[x][y] 表示x个蛋,在y楼扔后所需要的实验次数 ans = min (ans, max (dp[x][y-i], dp[x-1][i-1]) + ...
- git导出代码
1.快速查询 $git archive --format zip --output "./output.zip" master -0 ./output.zip 是生成的文件 mas ...
- python tkinter窗口弹出置顶的方法
加上下面两句即可实现root窗口的置顶显示,可以用于某些程序的消息提示,能够弹出到桌面显示 root = Tk() root.wm_attributes('-topmost',1)
- A. The Fault in Our Cubes 暴力dfs
http://codeforces.com/gym/101257/problem/A 把它固定在(0,0, 0)到(2, 2, 2)上,每次都暴力dfs检查,不会超时的,因为规定在这个空间上,一不行, ...
- AJPFX关于Class类和Class类实例
Java程序中的各个Java类属于同一类事物,描述这类事物的Java类就是Class类.对比提问:众多的人用一个什么类表示?众多的Java类用一个什么类表示?人 PersonJava类 Cla ...