Assuming you create the password using the following command and "myPassword" as the password
  htpasswd -c /usr/local/apache/passwd/passwords username

  This will create a file that looks like
  username:$apr1$sr15veBe$cwxJZHTVLHBkZKUoTHV.k.

  The $apr1$ is the hashing method, sr15veBe is the salt, and the last string is the hashed password. You can validate it using openssl using
  openssl passwd -apr1 -salt sr15veBe myPassword

  which will output
  $apr1$sr15veBe$cwxJZHTVLHBkZKUoTHV.k.

  A pipeline which you could use would be:
  username="something"
htpasswd -c /usr/local/apache/passwd/passwords $username
****Enter password:****

salt=$($(cat passwords | cut -d$ -f3)
password=$(openssl passwd -apr1 -salt $salt)
****Enter password:****

grep -q $username:$password passwords
if [ $? -eq 0 ]
then echo "password is valid"
else
echo "password is invalid"
fi
You may need to change your openssl command, as Apache's htpasswd command crypts slightly differently on each system.

htpasswd 是apache的小工具,在apache安装目录bin下可找到。

Usage:
htpasswd [-cmdpsD] passwordfile username
htpasswd -b[cmdpsD] passwordfile username password htpasswd -n[mdps] username
htpasswd -nb[mdps] username password
-c 创建一个新的加密密码文件
-n 不更新文件,显示结果
-m 使用MD5加密密码
-d 使用CRYPT加密密码(默认)
-p 不加密密码
-s 使用SHA加密密码
-b 直接在命令行输入密码,而不是提示后再输入密码
-D 删除用户
在Windows, NetWare与 TPF系统,'-m' 是默认的密码加密方式。
在所有其他系统,'-p'可能不能使用。

1.生成加密密码文件

htpasswd -c .pass fdipzone
New password:
Re-type new password:
Adding password for user fdipzone

这样就生成了一个使用CRYPT加密密码的文件

以下命令可以生成用md5加密密码的文件,b参数的作用是在命令行直接把密码输入,这样就不需要等提示输入密码再输入了。

htpasswd -cmb .pass fdipzone
Adding password for user fdipzone

2.修改密码

htpasswd .pass fdipzone
New password:
Re-type new password:
Updating password for user fdipzone

3.增加用户

htpasswd .pass guest
New password:
Re-type new password:
Adding password for user guest

4.删除用户

htpasswd -D .pass guest
Deleting password for user guest

如果使用p参数,不加密密码,系统会提示Warning,因此为了安全最好不要使用p参数。

htpasswd -cp .pass fdipzone
Warning: storing passwords as plain text might just not work on this platform.

.htaccess 调用加密密码文件控制访问权限

首先 Allowoverride 需要设置为 AuthConfig 或 All

然后在需要控制访问的目录下增加.htaccess

.htaccess内容如下

当访问该目录下的文件时,则会弹出要求输入用户名和密码的输入框。输入正确的用户名和密码后就能正常访问。

tips:为了安全,加密的密码文件请不要放在线上用户可以访问的路径。

OpenSSL命令---passwd

用途:

passwd命令计算一个密钥的哈希值或者计算列表中的每个密钥的hash值。

用法:

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

选项说明:

-crypt:生成标准的unix口令密文。默认选项。

-1:用MD5基于BSD的密钥算法。

-apr1:Apache md5口令密文。

-salt  string:用指定的字符串填充。当从终端读取一个密钥时,则填充它。

-in file:从指定的文件中读取密钥。

-stdin:从stdin中读取密钥。

-noverify:当从终端读取口令时不去验证它。

-quiet:当命令行提供的密钥是缩短了的,则不输出警告。

-table:用户输入的口令和结果用缩进隔开。

password:需要处理的密钥值。

实例:

openssl passwd -crypt -salt xx password  

打印出xxj31ZMTZzkVA。

openssl passwd - -salt xxxxxxxx password

打印出($1$xxxxxxxx$UYCIxa628.9qXjpQCjM4a.)。

openssl passwd -apr1 -salt xxxxxxxx password

打印出<$apr1$xxxxxxxx$dxHfLAsjHkDRmG83UXe8K0。

https://zhidao.baidu.com/question/372107922550340204.html

http://blog.csdn.net/fdipzone/article/details/41020045

http://blog.csdn.net/as3luyuan123/article/details/14917959

Apache Htpasswd生成和验证密码的更多相关文章

  1. 使用apache htpasswd生成加密的password文件,并使用.htaccess控制文件夹訪问

    htpasswd 是apache的小工具.在apache安装文件夹bin下可找到. Usage: htpasswd [-cmdpsD] passwordfile username htpasswd - ...

  2. apache htpasswd.exe创建密码

    一.使用apache htpasswd.exe创建密码文件,命令请看PHP推荐教程:apache htpasswd命令用法详解 apache htpasswd命令用法实例 1.如何利用htpasswd ...

  3. wordpress密码生成与登录密码验证

    一.研究wordpress时wordpess的密码密码生成与登录密码验证方式很重要 WordPress密码已成为整合的首要目标,如何征服整合,就得了解WordPress密码算法. WordPress系 ...

  4. 使用htpasswd实现Nginx验证访问

    Nginx是一个高性能的WEB服务器,越来越多的用户使用,如果您的某个站点不希望对外公开(比如PHPMyAdmin),可以使用htpasswd实现Nginx验证访问. 安装htpasswd htpas ...

  5. (6) openssl passwd(生成加密的密码)

    该伪命令用于生成加密的密码 [root@docker121 ssl]# man -f passwd passwd (1) - update user's authentication tokens p ...

  6. 《Apache服务用户身份验证管理》RHEL6.3

    1.安装apache软件包 Yum install httpd 2.启动apache服务 /etc/init.d/httpd restart 3.创建一个目录,内编辑一个index.html文件 4. ...

  7. Java下使用Apache POI生成具有三级联动下拉列表的Excel文档

    使用Apache POI生成具有三级联动下拉列表的Excel文档: 具体效果图与代码如下文. 先上效果图: 开始贴代码,代码中部分测试数据不影响功能. 第一部分(核心业务处理): 此部分包含几个方面: ...

  8. 使用truelicense实现用于JAVA工程license机制(包括license生成和验证)

    开发的软件产品在交付使用的时候,往往会授权一段时间的试用期,这个时候license就派上用场了.不同于在代码中直接加上时间约束,需要重新授权的时候使用license可以避免修改源码,改动部署,授权方直 ...

  9. javascript中怎样验证密码是否含有特殊符号、数字、大小写字母,长度是否大于6小于12

    今天在温习了一下以前学过的知识,一般常用验证密码是通过正则表达式或是通过ASCII 一.用AscII码来验证

随机推荐

  1. ARC管理内存(一)

    相关概念 栈 当程序执行某个方法(或函数)时,会从内存中名为栈(stack)的区域分配一块内存空间,这块内存空间称为帧(frame).帧负责保存程序在方法内声明的变量的值.在方法内声明的变量称为局部变 ...

  2. keepalived检测脚本及注意事项

    keepalived检测脚本的作用及注意事项: 默认每隔3秒钟执行一次检测脚本,检查nginx服务是否启动,如果没启动就把nginx服务启动起来,如果启动不成功,就把keepalived服务down掉 ...

  3. BufferingForwardingAppender in log4net

    https://blog.csdn.net/szx1999/article/details/50073857 7. 写日志会影响系统性能吗? 写日志必然是会消耗一定资源的,而RollingFileAp ...

  4. JAVA学习前十天:小结、面向对象之”扑克牌“例子

    2016年4月26号正式步入JAVA学习课堂,学习了第一节JAVA课程,由于以前有C语言基础,所以课程有点快! 第一天:学习了教材的第一部分,第一部分总共两章,分别是JAVA简介和JAVA基础语法. ...

  5. dajngo之中间件总结

    一.中间件:    a.中间件是什么?       - 中间件是一个类    b. 返回值注意       -(1)无返回值:继续执行后续函数中间件和视图函数       -(2)有返回值:执行自己的 ...

  6. aodh M版本新特性 - Remove eventlet from Aodh in favour of threaded approach

    在 Kilo版本, API WSGI application 可以有以下2种部署方式: As a Python command that runs a Werkzeug-based web serve ...

  7. 如何在windows上部署war包到tomcat服务器

    一. 什么是war包 WAR(Web Archive file)网络应用程序文件,是与平台无关的文件格式,它允许将很多文件组合成一个压缩文件.war专用在web方面,一个war包可以理解为一个web项 ...

  8. hdu 5236 Article(概率dp¥)

    Article Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

  9. Shell check IP

    #! /bin/bash checkip() {        if echo $1 |egrep -q '^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3 ...

  10. Redis-简单动态字符串

    这是读redis设计与实现的一系列读书笔记 1.SDS定义 C语言字符串:用一个 \0 结尾的 char 数组来表示 SDS:redis自己定义的简单动态字符串(simple dyanmic stri ...