2008-09-02 21 views

答えて

33

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

base64でエンコードされたとして、ログイン、コロン、$ apr1 $、塩および1000倍のMD5をだ
foo:$apr1$y1cXxW5l$3vapv2yyCXaYz8zGoXj241 

。ログイン、BASE64でエンコードコロン、文字列{SHA}とSHA1ハッシュです

foo:{SHA}BW6v589SIg3i3zaEW47RcMZ+I+M= 

:あなたはSHA1を選択した場合、彼らはこのように見えます。

あなたの言語はMD5またはSHA1とbase64のいずれかの実装を持っている場合は、ちょうどこのようなファイルを作成することができます

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

+4

MD5形式のパスワードも生成するコードが見つかりました。http://techtalk.virendrachandak.com/using-php-create-passwords-for-htpasswd-file/ –

-1

TracはhtpasswdをPythonに置き換えて出荷されています。あなたの言語に移植することができます:htpasswd.py

+0

cryptモジュールをインポートします。これはcで実装されています – hop

+1

このソリューションでは、htpasswdのオプションの1つとして「crypt」フォーマットを使用しています。それは時代遅れであり、使用すべきではありません。 – bitmusher

2

まず、このフォームを作成します。

<FORM METHOD="POST" ACTION="<? echo $_SERVER['PHP_SELF']; ?>" onSubmit='return ValidateForm()'> 
    Username<br /><INPUT TYPE="TEXT" NAME="user[]"><br /><br /> 
    Password<br /><INPUT TYPE="PASSWORD" NAME="password1[]"><br /> 
    <INPUT TYPE="PASSWORD" NAME="password2[]"><br /><br /> 
    <INPUT type=submit name="submit" VALUE="Create .htpasswd entry" onclick="document.all.submit.style.visibility='hidden'"> 
</FORM> 

を次に、このPHPコードは、あなたのためのパスワードを作成します。

if (isset($_POST['user']) && isset($_POST['password1'])) { 
    if($_POST['password1'] == $_POST['password2']) { 
     $user = $_POST['user']; 
     $password1 = $_POST['password1']; 
     $htpasswd_text = ""; 
     for ($i = 0; $i < count ($user); $i++) { 
      $htpasswd_text .= "$user[$i]:".crypt($password1[$i],CRYPT_STD_DES).""; 
     } 
     echo "<br />Copy this line to your .htpasswd file:"; 
     echo "<pre style=\"border-bottom-width:1px;border-bottom-style:solid;\">"; 
     echo nl2br($htpasswd_text); 
     echo "</pre><br />"; 
    } else { 
     echo "<pre style=\"border-bottom-width:1px;border-bottom-style:solid;\">Passwords do not match !</pre><br />"; 
    } 
} 

あなたに追加する実際のテキストファイルをのhtpasswdは$htpasswd_textであります変数。

+0

暗号形式ハッシングは廃止されており、今後は使用しないでください。 htpasswdの現在のデフォルトはmd5です。 – bitmusher

-1

から:

<?php 

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

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

file_put_contents('.htpasswd', $contents); 

?> 

ここ形式の詳細だが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); 

?> 

http://ca3.php.net/crypt

これはもちろん、既存のファイル全体を上書きするので、何らかの連結をしたいと思うでしょう。

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

+0

htpasswdファイルの暗号化形式ハッシュは廃止されており、使用しないでください。現在のデフォルトはmd5です。 – bitmusher

関連する問題