• openssl passwd


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

    [root@docker-01 ~]# whatis passwd
    sslpasswd (1ssl)     - compute password hashes
    passwd (1)           - update user's authentication tokens

    使用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@docker-01 ~]# openssl passwd 123456 ; openssl passwd 123456 
    jKQ3BCZuzodcM
    EZSkaSj95n/E2

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

    [root@docker-01 ~]# openssl passwd -salt 'xxx' 123456 ; openssl passwd -salt 'xxx' 123456
    xxkVQ7YXT9yoE
    xxkVQ7YXT9yoE

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

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

    [root@docker-01 ~]# openssl passwd -salt 'xyx' 123456;openssl passwd -salt 'xxx' 123456
    xyJkVhXGAZ8tM
    xxkVQ7YXT9yoE

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

    [root@docker-01 ~]# openssl passwd -salt 'xyz' 123456 ; openssl passwd -salt 'xyy' 123456
    xyJkVhXGAZ8tM
    xyJkVhXGAZ8tM

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

    [root@docker-01 ~]# openssl passwd -1 123456 ; openssl passwd -1 123456   
    $1$vtq3f.as$wRQbGcKp3wHyFhC3YvsXK.
    $1$aLWTn0Cu$fT/gUBtIdBwc9AwPeYAOU1

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

    [root@docker-01 ~]# openssl passwd -1 -salt 'abcdefg' 123456 ; openssl passwd -1 -salt 'abcdefg' 123456
    $1$abcdefg$a3UbImglR4PCA3x7OvwMX.
    $1$abcdefg$a3UbImglR4PCA3x7OvwMX.

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

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

    [root@docker-01 ~]# openssl passwd -apr1  123456 ; openssl passwd -apr1 123456
    $apr1$f1Dc/wmN$4kR2BCaGLon3zR.Gv6qhP.
    $apr1$np43/1e2$iX.QQ9Df06k7u.Q031/8./
    [root@docker-01 ~]# openssl passwd -apr1 -salt 'abcdefg' 123456 ;  openssl passwd -apr1 -salt 'abcdefg' 123456
    $apr1$abcdefg$PCGBZd8XFTLOgZzLLU3K00
    $apr1$abcdefg$PCGBZd8XFTLOgZzLLU3K00

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

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

    [root@docker-01 ~]# grub-crypt --sha-512

    可以使用语句简单地代替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
  • 相关阅读:
    ASP.NET MVC 让@Html.DropDownList显示默认值
    ASP.NET MVC View向Controller提交数据
    ASP.NET MVC Controller向View传值的几种方式
    ASP.NET MVC3中Controller与View之间的数据传递总结
    net MVC中的模型绑定、验证以及ModelState
    30分钟LINQ教程
    使用Html.BeginForm来提交表单
    @Html.DropDownList
    uni-app页面导航栏透明背景
    nom install 报错
  • 原文地址:https://www.cnblogs.com/liujunjun/p/12398634.html
Copyright © 2020-2023  润新知