使用R生成htpasswd条目。

问题描述 投票:0回答:1

有没有办法生成一个 htpasswd 条目,即不需要使用 htpasswd 功用本身?

根据 Apache文档,

htpasswd 使用 bcrypt(为 Apache 修改的 MD5 版本)、SHA1 或系统的 crypt() 例程。管理的文件 htpasswd 可能包含不同编码类型的密码的混合物;一些用户记录可能有bcrypt或MD5加密的密码,而同一文件中的其他用户记录可能有用以下方法加密的密码 crypt().

我试着用以下两种方法 openssl::md5digest::digest但它们似乎没有产生任何我可以识别的东西。

下面是一些使用 htpasswd 在Ubuntu上。结果每次都会改变,可能是因为使用了盐。哈希值看起来也不像是base64编码的。

hongo@hongsdev:~$ echo bar | htpasswd -n -i foo
foo:$apr1$ArTUhiJz$/qjciBNKHEWwpXBof75rb.

hongo@hongsdev:~$ echo bar | htpasswd -n -i foo
foo:$apr1$pZxmtIam$VkfMvV2qR4NBkPm3MKcJ/.

hongo@hongsdev:~$ echo bar | htpasswd -n -i foo
foo:$apr1$IFM43G9p$UkQB9QSONrwD74WpXlP7f/

一些尝试使用 openssl::md5digest::digest:

r$> openssl::md5("bar")
[1] "37b51d194a7513e45b56f6524f2d51f2"

r$> digest::digest("bar", algo="md5")
[1] "cbd2100992f98ebf9169448cf98f63a5"

r$> openssl::base64_encode(openssl::md5("bar"))
[1] "MzdiNTFkMTk0YTc1MTNlNDViNTZmNjUyNGYyZDUxZjI="
r openssl .htpasswd
1个回答
0
投票

回到这个问题上....

这个.... 加密 软件包提供了一个R接口,可以用来生成一个合适的文件,来实现blowfish密码哈希算法。似乎没有其他算法的包,但这个包可以用。

library(bcrypt)

user_list <- list(
    c("user1", "password1")
)
user_str <- sapply(user_list, function(x) paste(x[1], hashpw(x[2]), sep=":"))
writeLines(user_str, "auth")
© www.soinside.com 2019 - 2024. All rights reserved.