以编程方式构建 htpasswd

发布于 2024-07-04 20:08:19 字数 102 浏览 7 评论 0原文

是否有一种编程方式来构建 htpasswd 文件,而不依赖于操作系统特定函数(即 exec()passthru())?

Is there a programmatic way to build htpasswd files, without depending on OS specific functions (i.e. exec(), passthru())?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

薄情伤 2024-07-11 20:08:19

Trac 附带了 htpasswd 的 Python 替代品,我相信您可以将其移植到您选择的语言:< a href="http://trac.edgewall.org/browser/trunk/contrib/htpasswd.py" rel="nofollow noreferrer">htpasswd.py。

Trac ships with a Python replacement for htpasswd, which I'm sure you could port to your language of choice: htpasswd.py.

谁的年少不轻狂 2024-07-11 20:08:19

根据 PHP 网站上的说明,您可以在以下方法中使用 crypt():

<?php

// Set the password & username
$username = 'user';
$password = 'mypassword';

// Get the hash, letting the salt be automatically generated
$hash = crypt($password);

// write to a file
file_set_contents('.htpasswd', $username ':' . $contents);

?>

可以找到此示例的部分内容: https://www.php.net/crypt

这当然会覆盖整个现有文件,因此您需要进行某种连接。

我不是 100% 确定这会起作用,但我很确定。

From what it says on the PHP website, you can use crypt() in the following method:

<?php

// Set the password & username
$username = 'user';
$password = 'mypassword';

// Get the hash, letting the salt be automatically generated
$hash = crypt($password);

// write to a file
file_set_contents('.htpasswd', $username ':' . $contents);

?>

Part of this example can be found: https://www.php.net/crypt

This will of course overwrite the entire existing file, so you'll want to do some kind of concatination.

I'm not 100% sure this will work, but I'm pretty sure.

月棠 2024-07-11 20:08:19

.httpasswd 文件只是具有特定格式的文本文件,具体取决于指定的哈希函数。 如果您使用 MD5,它们看起来像这样:

foo:$apr1$y1cXxW5l$3vapv2yyCXaYz8zGoXj241

这是登录名、冒号、$apr1$、salt 和 1000 倍的 md5 编码为 base64。 如果您选择 SHA1,它们看起来像这样:

foo:{SHA}BW6v589SIg3i3zaEW47RcMZ+I+M=

这是登录名、冒号、字符串 {SHA} 和使用 base64 编码的 SHA1 哈希值。

如果您的语言具有 MD5 或 SHA1 和 base64 的实现,您可以像这样创建文件:

<?php

$login = 'foo';
$pass = 'pass';
$hash = base64_encode(sha1($pass, true));

$contents = $login . ':{SHA}' . $hash;

file_put_contents('.htpasswd', $contents);

?>

以下是有关格式的更多信息:

http://httpd.apache.org/docs/2.2/misc/password_cryptions.html

.httpasswd files are just text files with a specific format depending on the hash function specified. If you are using MD5 they look like this:

foo:$apr1$y1cXxW5l$3vapv2yyCXaYz8zGoXj241

That's the login, a colon, ,$apr1$, the salt and 1000 times md5 encoded as base64. If you select SHA1 they look like this:

foo:{SHA}BW6v589SIg3i3zaEW47RcMZ+I+M=

That's the login, a colon, the string {SHA} and the SHA1 hash encoded with base64.

If your language has an implementation of either MD5 or SHA1 and base64 you can just create the file like this:

<?php

$login = 'foo';
$pass = 'pass';
$hash = base64_encode(sha1($pass, true));

$contents = $login . ':{SHA}' . $hash;

file_put_contents('.htpasswd', $contents);

?>

Here's more information on the format:

http://httpd.apache.org/docs/2.2/misc/password_encryptions.html

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文