2014-06-10 71 views

回答

18

假設您創建密碼使用以下命令和「MYPASSWORD」作爲密碼

htpasswd -c /usr/local/apache/passwd/passwords username 

這將創建一個看起來像

username:$apr1$sr15veBe$cwxJZHTVLHBkZKUoTHV.k. 

的$ APR1 $文件是散列法,sr15veBe是鹽,最後一個字符串是哈希密碼。您可以通過使用

openssl passwd -apr1 -salt sr15veBe myPassword 

OpenSSL的將輸出

$apr1$sr15veBe$cwxJZHTVLHBkZKUoTHV.k. 

的管線鋪設,您可以使用將驗證它:

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 

您可能需要改變你的OpenSSL的命令,如Apache的htpasswd命令在每個系統上稍有不同。

欲瞭解更多信息,請訪問Apache的頁面上的話題在http://httpd.apache.org/docs/2.2/misc/password_encryptions.html

5

可以使用htpasswd工具這一點。

# create htpasswd_file with user:password 
$ htpasswd -cb htpasswd_file user password 
Adding password for user user 

# verify password for user 
$ htpasswd -vb htpasswd_file user wrongpassword 
password verification failed 

$ htpasswd -vb htpasswd_file user password 
Password for user user correct. 

退出狀態是0成功,3失敗。