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. PHP搜索文件夹下全部文件

    搜索文件夹下全部文件 //搜索文件夹下全部文件,暂时不支持中文文件名 public function scanFile($path) { if (!is_dir($path)) return arra ...

  2. 写时拷贝(Copy On Write)方案详解

    本文旨在通过对 写时拷贝 的四个方案(Copy On Write)分析,让大家明白写时拷贝的实现及原理. 关于浅拷贝与深拷贝,我在之前的博客中已经阐述过了  浅拷贝容易出现指针悬挂的问题,深拷贝效率低 ...

  3. eclipse中web项目部署到本地tomcat中,但是在本地的tomcat的webapp下找不到发布的项目

    eclipse不像MyEclipse默认将项目部署到tomcat安装目录下的webapps中,而默认部署到工作目录下 为了使项目默认部署到tomcat安装目录下的webapps中,show view- ...

  4. python统计代码行数

    以前写了一个java的统计代码行数的小程序,最近在看python,于是就参考前辈的代码,写了一个统计文件夹下面各种程序的代码的小程序,这里贴出来供大家参考 参考链接: https://gist.git ...

  5. webpack 从0 手动配置

    1. npm init 2. npm install -D webpack webpack-cli 3. 创建webpack入口文件( 默认 webpack.config.js 可以通过 webpac ...

  6. java基础(4)-数组(1)

    数组:存储同一种数据类型的多个元素的容器数组初始化: 元素类型[] 数组名 = new 元素类型[数组长度]int [] arr = new int[5] 元素类型[] 数组名 = new 元素类型[ ...

  7. python练习_三级菜单

    python练习_三级菜单 需求: 做一个地区查询三级菜单,输入一级能够打印下一级 在第三级个第二级输入e可以返回上一级 在任意一级输入q则退出程序 以下代码实现的功能与思路: 功能: (1)通过In ...

  8. 在python3.x上安装suds 并访问webservice

    suds...py3很乱.. 一开始直接使用命令行:pip install suds安装,结果报错ImportError: No module named client,然后就自然的pip insta ...

  9. (转)Openstack Cascading和Nova Cell

    Openstack是看着AWS成长起来的,这点毋庸置疑:所以AWS大规模商用已成事实的情况下,Openstack也需要从架构和产品实现上进行优化,以满足大规模商用的要求.从已有的实现来看其中两种方式值 ...

  10. [Kafka] - Kafka内核理解:分布式机制

    一个Topic中的所有数据分布式的存储在kafka集群的所有机器(broker)上,以分区(partition)的的形式进行数据存储:每个分区允许存在备份数据/备份分区(存储在同一kafka集群的其它 ...