質問

プログラムで構築する方法はありますか htpasswd OS 固有の機能に依存せずにファイルを保存できます (つまり、 exec(), passthru())?

役に立ちましたか?

解決

.httpasswd ファイルは、指定されたハッシュ関数に応じた特定の形式の単なるテキスト ファイルです。MD5 を使用している場合は次のようになります。

foo:$apr1$y1cXxW5l$3vapv2yyCXaYz8zGoXj241

これは、ログイン、コロン、,$apr1$、ソルト、および Base64 としてエンコードされた 1000 回の md5 です。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_encryptions.html

他のヒント

トラック htpasswd に代わる Python が同梱されているので、お好みの言語に移植できると思います。 htpasswd.py.

PHP Web サイトに記載されているところによると、次のメソッドで 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);

?>

この例の一部は次のとおりです。 http://ca3.php.net/crypt

もちろん、これにより既存のファイル全体が上書きされるため、何らかの連結を行う必要があります。

これがうまくいくかどうかは 100% 確信はありませんが、かなり確信しています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top