2008-09-02 17 views

cevap

33

.httpasswd dosyaları, belirtilen karma işlevine bağlı olarak yalnızca belirli bir biçimdeki metin dosyalarıdır. Eğer MD5 kullanıyorsanız bunlar şuna benzer:

base64 olarak kodlanmış giriş, iki nokta üst üste, $ apr1 $, tuz ve 1000 kat md5 var
foo:$apr1$y1cXxW5l$3vapv2yyCXaYz8zGoXj241 

. Eğer SHA1 seçerseniz onlar şuna benzer:

giriş, bir kolon, dize {SHA} ve base64 ile kodlanmış SHA1 hash
foo:{SHA}BW6v589SIg3i3zaEW47RcMZ+I+M= 

.

Dil MD5 veya SHA1 ve base64 ya gerçeklenimine Eğer sadece bu gibi dosya oluşturabilirsiniz:

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

+4

MD5 biçimindeki şifreyi üretmek için http://techtalk.virendrachandak.com/using-php-create-passwords-for-htpasswd-file/ –

-1

Trac, htpasswd için bir Python yedeklemesiyle birlikte gönderilir; emin olduğunuz dil seçeneğinizle bağlantı kurabilirsiniz: htpasswd.py.

+0

kript modülünü içe aktarır ve bu, c – hop

+1

içinde uygulanır. Bu çözüm, htpasswd için bir avuç seçenekten biri olan "crypt" biçimini kullanır. Bu eski ve kullanılmamalıdır. – bitmusher

2

Birincisi, bu form oluşturmak:

<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> 

Sonra bu PHP kodu sizin için şifre oluşturacaksınız: Dosyanın $htpasswd_text olduğunu 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 />"; 
    } 
} 

gerçek metin eklemek için değişken.

+0

kript formatı hashing eski ve artık kullanılmamalıdır. Htpasswd için geçerli varsayılan md5'tir. – bitmusher

-1

Gönderen:

<?php 

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

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

file_put_contents('.htpasswd', $contents); 

?> 

İşte biçimi hakkında daha fazla bilgi var PHP web sitesinde ne yazıyorsa, aşağıdaki yöntemde crypt() kullanabilirsiniz:

<?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); 

?> 

Bu örnekte bulabileceğiniz bölüm: http://ca3.php.net/crypt

Bu, tabiki mevcut dosyanın üzerine yazacaktır, bu yüzden bir çeşit uyum sağlamak isteyeceksiniz.

Bunun işe yarayacağından% 100 emin değilim, ama eminim.

+0

şifreleme kodu htpasswd dosyalarındaki karmaşayı kullanıyorum ve kullanılmamalı . Geçerli varsayılan md5 varyantıdır. – bitmusher