使用 R 生成 htpasswd 条目
Generating htpasswd entry using R
有没有办法使用 R 生成 htpasswd
条目,即不使用 htpasswd
实用程序本身?
htpasswd
encrypts passwords using either bcrypt, a version of MD5 modified for Apache, SHA1, or the system's crypt()
routine. Files managed by htpasswd
may contain a mixture of different encoding types of passwords; some user records may have bcrypt or MD5-encrypted passwords while others in the same file may have passwords encrypted with crypt()
.
我尝试使用 openssl::md5
或 digest::digest
,但它们似乎没有产生任何我能识别的东西。
这是在 Ubuntu 上使用 htpasswd
的一些示例输出。结果每次都会改变,大概是因为使用了盐。哈希看起来也不像是 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::md5
和digest::digest
的一些尝试:
r$> openssl::md5("bar")
[1] "37b51d194a7513e45b56f6524f2d51f2"
r$> digest::digest("bar", algo="md5")
[1] "cbd2100992f98ebf9169448cf98f63a5"
r$> openssl::base64_encode(openssl::md5("bar"))
[1] "MzdiNTFkMTk0YTc1MTNlNDViNTZmNjUyNGYyZDUxZjI="
回到这个....
bcrypt 包为河豚密码哈希算法提供了一个 R 接口,可用于生成合适的文件。似乎没有其他算法的包,但这个有效。
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")
有没有办法使用 R 生成 htpasswd
条目,即不使用 htpasswd
实用程序本身?
htpasswd
encrypts passwords using either bcrypt, a version of MD5 modified for Apache, SHA1, or the system'scrypt()
routine. Files managed byhtpasswd
may contain a mixture of different encoding types of passwords; some user records may have bcrypt or MD5-encrypted passwords while others in the same file may have passwords encrypted withcrypt()
.
我尝试使用 openssl::md5
或 digest::digest
,但它们似乎没有产生任何我能识别的东西。
这是在 Ubuntu 上使用 htpasswd
的一些示例输出。结果每次都会改变,大概是因为使用了盐。哈希看起来也不像是 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::md5
和digest::digest
的一些尝试:
r$> openssl::md5("bar")
[1] "37b51d194a7513e45b56f6524f2d51f2"
r$> digest::digest("bar", algo="md5")
[1] "cbd2100992f98ebf9169448cf98f63a5"
r$> openssl::base64_encode(openssl::md5("bar"))
[1] "MzdiNTFkMTk0YTc1MTNlNDViNTZmNjUyNGYyZDUxZjI="
回到这个....
bcrypt 包为河豚密码哈希算法提供了一个 R 接口,可用于生成合适的文件。似乎没有其他算法的包,但这个有效。
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")