openssl passwd
openssl系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html
该伪命令用于生成加密的密码。
[root@xuexi tmp]# whatis passwd
passwd () - update user's authentication tokens
passwd () - 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] [-] [-apr1] [-salt string] [-in file] [-stdin] [-quiet] {password}
使用openssl passwd支持3种加密算法方式:不指定算法时,默认使用-crypt。
选项说明:
-crypt:UNIX标准加密算法,此为默认算法。如果加盐(-salt)算密码,只取盐的前2位,2位后面的所有字符都忽略。
-1(数字):基于MD5的算法代号。更多的算法代号见"http://www.cnblogs.com/f-ck-need-u/p/7011460.html#blog222"。
-apr1(数字):apache中使用的备选md5算法代号,不能和"-1"选项一起使用,因为apr1本身就默认了md5。htpasswd工具生成的身份验证密码就是此方法。
-salt:加密时加点盐,可以增加算法的复杂度。但加了盐会有副作用:盐相同,密码相同,加密的结果将一样。
-in file:从文件中读取要计算的密码列表
-stdin:从标准输入中获取要输入的密码
-quiet:生成密码过程中不输出任何信息
在命令行中直接输入要加密的密码password或者使用-salt时,将不需要交互确认,否则会交互确认密码。
[root@xuexi ~]# openssl passwd ; openssl passwd
R7J9OiPEN5xUw
C1lvfmeMltEWw
由上面的测试可知,使用默认的-crypt加密的密码是随机的。但是加入盐后,如果密码一样,盐一样,那么加密结果一样。
[root@xuexi ~]# openssl passwd -salt 'xxx' ; openssl passwd -salt 'xxx'
xxkVQ7YXT9yoE
xxkVQ7YXT9yoE
同时也看到了-crypt加密算法只取盐的前两位。
如果盐的前两位和密码任意一个不一样,加密结果都不一样。
[root@xuexi ~]# openssl passwd -salt 'xyx' ;openssl passwd -salt 'xxx'
xyJkVhXGAZ8tM
xxkVQ7YXT9yoE
注意,默认的-crypt只取盐的前两位字符,所以只要盐的前两位一样,即使第三位不同,结果也是一样的。
[root@xuexi ~]# openssl passwd -salt 'xyz' ; openssl passwd -salt 'xyy'
xyJkVhXGAZ8tM
xyJkVhXGAZ8tM
测试下MD5格式的加密算法。
[root@xuexi ~]# openssl passwd - ; openssl passwd -
$$CJ1eA7bT$4VAJoS3hU/gRTrSQ8r8UQ.
$$l1uIsNoH$A35cHQ6oGm29IJOas5v7w0
可见,结果比-crypt的算法更长了,且不加盐时,密码生成是随机的。
[root@xuexi ~]# openssl passwd - -salt 'abcdefg' ; openssl passwd - -salt 'abcdefg'
$$abcdefg$a3UbImglR4PCA3x7OvwMX.
$$abcdefg$a3UbImglR4PCA3x7OvwMX.
可以看出,加了盐虽然复杂度增加了,但是也受到了"盐相同,密码相同,则加密结果相同"的限制。另外,盐的长度也不再限于2位了。
再为apache或nginx生成访问网页时身份验证的密码,即basic authentication验证方式的密码。
[root@xuexi ~]# openssl passwd -apr1 ; openssl passwd -apr1
$apr1$ydbBroeI$/9YsZR.tJI/GS0YswkQLJ.
$apr1$ncebpB6C$4fnRmlrnL2LPKxrZxCZzJ1
[root@xuexi ~]# openssl passwd -apr1 -salt 'abcdefg' ; openssl passwd -apr1 -salt 'abcdefg'
$apr1$abcdefg$PCGBZd8XFTLOgZzLLU3K00
$apr1$abcdefg$PCGBZd8XFTLOgZzLLU3K00
同样,加了盐就受到"盐相同,密码相同则加密结果相同"的限制。
关于openssl passwd文件,它生成的密码可以直接复制到/etc/shadow文件中,但openssl passwd因为不支持sha512,所以密码强度不够。如果要生成sha512的密码,可以使用grub-crypt生成,它是一个python脚本,只不过很不幸CentOS 7只有grub2,grub-crypt命令已经没有了。
[root@xuexi ~]# grub-crypt --sha-
Password:
Retype password:
$$2RCBJT7rELpfX4.Q$iKM5vNShNqUcCiez.JDBgbRkj007eXVVs790UwiOw1PMvB/s/vE7DhyDe8YJ6T8aEtP0Vev5kMReL/nILwLZX/
可以使用语句简单地代替grub-crypt。
python -c 'import crypt,getpass;pw=getpass.getpass();print(crypt.crypt(pw) if (pw==getpass.getpass("Confirm: ")) else exit())'
grub-crypt和上述python语句都是交互式的。如果要非交互式,稍稍修改下python语句:
python -c 'import crypt,getpass;pw="123456";print(crypt.crypt(pw))'
</div
openssl passwd的更多相关文章
- 4.openssl passwd
该伪命令用于生成加密的密码. [root@xuexi tmp]# whatis passwd ) - update user's authentication tokens ) - password ...
- (6) openssl passwd(生成加密的密码)
该伪命令用于生成加密的密码 [root@docker121 ssl]# man -f passwd passwd (1) - update user's authentication tokens p ...
- OpenSSL命令---passwd
NAME passwd - compute password hashes SYNOPSIS openssl passwd [-crypt] [-1] [-apr1] [-salt string] [ ...
- openssl用法详解
OpenSSL 是一个开源项目,其组成主要包括一下三个组件: openssl:多用途的命令行工具 libcrypto:加密算法库 libssl:加密模块应用库,实现了ssl及tls openssl可以 ...
- /etc/passwd&/etc/shadow文件分析
/etc/passwd该目录存储的是操作系统用户信息,该文件为所有用户可见.给linux系统添加一个帐号:useradd -g mysql -d /home/test -m test(:新建一个用户t ...
- openssl大纲
1.加密和SSL机制:http://www.cnblogs.com/f-ck-need-u/p/6089523.html 2.openssl命令总指挥:http://www.cnblogs.com/f ...
- Linux的加密认证功能以及openssl详解
一.详细介绍加密.解密技术 现在的加密/解密技术主要有三种:对称加密,非对称加密,和单向加密 这三种加密解密技术的组合就是现在电子商务的基础,它们三个有各自最适合的领域,而且所要完成的功能也是不同的, ...
- openssl命令用法
openssl命令 配置文件:/etc/pki/tls/openssl.cnf 命令格式: openssl command [ command_opts ] [ command_args ] 众多子命 ...
- OpenSSL Command-Line HOWTO
OpenSSL Command-Line HOWTO The openssl application that ships with the OpenSSL libraries can perform ...
随机推荐
- Python3实战系列之六(获取印度售后数据项目)
问题:续接上一篇.说干咱就干呀,勤勤恳恳写程序呀! 目标:此篇我们试着把python程序打包成.exe程序.这样就可以在服务器上运行了.实现首篇计划列表功能模块的第三步: 3..exe文件能在服务器上 ...
- Linux 6上使用UDEV绑定共享存储
1.硬盘的查看方式 [root@cl6-11gr2-rac1 ~]# ls -ltr /dev/sd* brw-rw----. 1 root disk 8, 48 8月 16 13:34 /dev/s ...
- Zip包解压工具类
最近在做项目的自动检测离线升级,使用到了解压zip包的操作,本着拿来主义精神,搞了个工具类(同事那边拿的),用着还不错. package com.winning.polaris.admin.utils ...
- Maths | 为什么点积等价于投影后的乘积
目录 1. 复习点积 2. 点积的对称性 3. 矩阵与变换的关系 4. 一维矩阵也是一种线性变换 5. 最终解释:为什么是投影 先上结论: \(\boldsymbol v\)和\(\boldsymbo ...
- Papers | 图像/视频增强 + 深度学习
目录 I. ARCNN 1. Motivation 2. Contribution 3. Artifacts Reduction Convolutional Neural Networks (ARCN ...
- django扩展User认证系统
第一种方法proxy 如果你对Django提供的字段,以及验证的方法都比较满意,没有什么需要改的.但是只是需要在他原有的基础之上增加一些操作的方法.那么建议使用这种方式.示例代码如下: #在model ...
- Runtime之成员变量&属性&关联对象
上篇介绍了Runtime类和对象的相关知识点,在4.5和4.6小节,也介绍了成员变量和属性的一些方法应用.本篇将讨论实现细节的相关内容. 在讨论之前,我们先来介绍一个很冷僻但又很有用的一个关键字:@e ...
- 浅谈数通畅联ECP与EAC的区别
最近收到很多客户的提问,AEAI ECP企业云联平台是什么产品?为什么AEAI ECP中包括集成套件?EAC也是数通畅联的产品吗?同样涉及集成两者有什么区别呢?诸如此类的问题还有很多. 其实AEAI ...
- 「SDOI2016」储能表(数位dp)
「SDOI2016」储能表(数位dp) 神仙数位 \(dp\) 系列 可能我做题做得少 \(QAQ\) \(f[i][0/1][0/1][0/1]\) 表示第 \(i\) 位 \(n\) 是否到达上界 ...
- kubernetes集群搭建(7):常见问题及处理
尤其在创建pod的时候,会遇见各类问题,请通过下列命令来查看错误详情 kubectl describe pod xxxxxx 1.问题现象:镜像始终获取不下来 解决办法:为docker设置镜像源 [r ...