htpasswd 默认创建的密码只有前8位有效

回复 收藏
按照如下命令创建密码
htpasswd -c .htpasswd  user1
假如,密码为123456789
那么访问时,不管是输入 12345678 还是 123456789 甚至是 123456781234  都能顺利通过验证。这是为什么呢?
htpasswd默认情况,是使用系统库中的crypt()函数来对密码明文进行单向加密的。在网上找到该函数的说明:
crypt()将使用Data Encryption Standard(DES)演算法将参数key所指的字符串加以编码,key字符串长度仅取前8个字符,超过此长度的字符没有意义。参数salt为两个字 符组成的字符串,由a-z,A-Z,0-9,".",和"/"所组成,用来决定使用4096种不同内建表格的哪一个。函数执行成功后会返回指向编码过的字符串指针,参数key所指的字符串不会有所更动。编码过的字符串长度为13个字符,前两个字符为参数salt代表的字符串。

所以,如果你想创建超过8位的密码,请使用-m参数或者-s 参数,这两个参数分别表示创建的密码以MD5加密方式加密和以SHA方式加密。
htpasswd -c -m .htpasswd  user1
这样创建的密码没有8位数限制了。
2012-08-07 13:50 举报
已邀请:
0

ilyqui

赞同来自:

在apache 2.4.6中测试时, 密码默认支持8位以上,已经没有只识别8位的问题。
0

lyhabc

赞同来自:

原来默认htpasswd以DES方式加密的
0

wanmei

赞同来自:

学习了

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: