2008-09-02 3 views

답변

33

.httpasswd 파일은 지정된 해시 함수에 따라 특정 형식의 텍스트 파일 일뿐입니다. 당신이 MD5를 사용하는 경우 그들은 다음과 같이 :

베이스 64로 인코딩 로그인, 콜론, $ apr1 $, 소금 및 1000 배의 MD5있어
foo:$apr1$y1cXxW5l$3vapv2yyCXaYz8zGoXj241 

. 당신은 SHA1을 선택하면 그들은 다음과 같이 :

로그인, 콜론, 문자열 {SHA}과베이스 64로 인코딩 된 SHA1 해시의
foo:{SHA}BW6v589SIg3i3zaEW47RcMZ+I+M= 

.

언어는 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에 대한 몇 가지 옵션 중 하나 인 "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 코드는 당신을 위해 비밀번호를 생성합니다 : 당신이 파일이 $htpasswd_text에 HTPASSWD에

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 />"; 
    } 
} 

실제 텍스트를 추가 할을 변하기 쉬운.

+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()를 사용할 수 있습니다 :

http://ca3.php.net/crypt

이것은 물론 기존의 파일 전체를 덮어 쓰므로 어떤 종류의 연결을 원할 것입니다.

100 % 확신 할 수는 없지만 확실합니다.

+0

htpasswd 파일의 암호 형식 해시는 사용되지 않아 사용해서는 안됩니다. . 현재 기본값은 md5 변형입니다. – bitmusher