<-
Apache HTTP 服务器 2.4 > 密码加密格式

密码格式

关于Apache生成和理解的密码加密格式的说明。

支持Apache!

也可以看看

最佳

基本认证

Apache可以识别基本身份验证密码的五种格式。请注意,并非所有格式都可在每个平台上使用:

加密
“ $ 2y $” + crypt_blowfish算法的结果。有关 算法的详细信息,请参见APR源文件 crypt_blowfish.c
MD5
“ $ apr1 $” +使用特定于Apache的算法的结果,该算法使用对32位随机盐和密码的各种组合进行迭代(1000次)的MD5摘要。有关 算法的详细信息,请参见APR源文件 apr_md5.c
SHA1
“ {SHA}” +密码的Base64编码的SHA-1摘要。不安全
加密
仅限于Unix。将传统的Unix crypt(3)函数与随机生成的32位盐(仅使用12位)和密码的前8个字符一起使用。不安全
纯文本(即未加密的
仅Windows和Netware。不安全

用htpasswd生成值

加密

$ htpasswd -nbB myName myPassword
myName:$2y$05$c4WoMPo3SXsafkva.HHa6uXQZWr7oboPiC2bT/r7q1BB8I2s0BRqC

MD5

$ htpasswd -nbm myName myPassword
myName:$apr1$r31.....$HqJZimcKQFAMYayBlzkrA/

SHA1

$ htpasswd -nbs myName myPassword
myName:{SHA}VBPuJHI7uixaa6LQGWx4s+5GKNE=

加密

$ htpasswd -nbd myName myPassword
myName:rqXexS6ZhobKA

使用OpenSSL命令行程序生成CRYPT和MD5值

OpenSSL知道Apache特定的MD5算法。

MD5

$ openssl passwd -apr1 myPassword
$apr1$qHDFfhPC$nITSVHgYbDAK1Y0acGRnY0

加密

openssl passwd -crypt myPassword
qQ5vTYO3c8dsU

使用OpenSSL命令行程序验证CRYPT或MD5密码

CRYPT密码的盐是前两个字符(转换为二进制值)。验证myPasswordrqXexS6ZhobKA

加密

$ openssl passwd -crypt -salt rq myPassword
Warning: truncating password to 8 characters
rqXexS6ZhobKA

请注意,使用myPasswo代替代替 myPassword将产生相同的结果,因为仅考虑了CRYPT密码的前8个字符。

MD5密码的位数介于$apr1$和之间$(作为Base64编码的二进制值-最多8个字符)。验证myPassword$apr1$r31.....$HqJZimcKQFAMYayBlzkrA/

MD5

$ openssl passwd -apr1 -salt r31..... myPassword
$apr1$r31.....$HqJZimcKQFAMYayBlzkrA/

mod_dbd的数据库密码字段

SHA1变体可能是DBD身份验证最有用的格式。由于SHA1和Base64功能是普遍可用的,因此其他软件可以使用Apache基本身份验证可以使用的加密密码来填充数据库。

要创建各种语言的Apache SHA1变体基本身份验证密码:

的PHP

'{SHA}' . base64_encode(sha1($password, TRUE))

爪哇

"{SHA}" + new sun.misc.BASE64Encoder().encode(java.security.MessageDigest.getInstance("SHA1").digest(password.getBytes()))

冷融合

"{SHA}" & ToBase64(BinaryDecode(Hash(password, "SHA1"), "Hex"))

红宝石

require 'digest/sha1'
require 'base64'
'{SHA}' + Base64.encode64(Digest::SHA1.digest(password))

C或C ++

Use the APR function: apr_sha1_base64

蟒蛇

import base64
import hashlib
"{SHA}" + format(base64.b64encode(hashlib.sha1(password).digest()))

PostgreSQL(安装了contrib / pgcrypto函数)

'{SHA}'||encode(digest(password,'sha1'),'base64')

最佳

摘要式身份验证

Apache识别一种摘要式身份验证密码格式-字符串的MD5哈希 user:realm:password为32个字符的十六进制数字字符串。realmAuthNamehttpd.conf中指令的Authorization Realm参数 。

mod_dbd的数据库密码字段

由于MD5功能是普遍可用的,因此其他软件可以使用Apache摘要认证可用的加密密码来填充数据库。

要创建各种语言的Apache摘要身份验证密码:

的PHP

md5($user . ':' . $realm . ':' .$password)

爪哇

byte b[] = java.security.MessageDigest.getInstance("MD5").digest( (user + ":" + realm + ":" + password ).getBytes());
java.math.BigInteger bi = new java.math.BigInteger(1, b);
String s = bi.toString(16);
while (s.length() < 32)
s = "0" + s; // String s is the encrypted password

冷融合

LCase(Hash( (user & ":" & realm & ":" & password) , "MD5"))

红宝石

require 'digest/md5'
Digest::MD5.hexdigest(user + ':' + realm + ':' + password)

PostgreSQL(安装了contrib / pgcrypto函数)

encode(digest( user || ':' || realm || ':' || password , 'md5'), 'hex')

可用语言: zh  |  fr 

最佳

注释

注意:
这不是“问答”部分。此处放置的评论应指向有关改进文档或服务器的建议,如果实施或被认为无效/偏离主题,我们的主持人可以将其删除。有关如何管理Apache HTTP Server的问题,应直接指向我们的IRC频道#httpd(位于Freenode上),或发送至我们的邮件列表
目前,此页面已禁用评论。