2008-09-02 15 views

उत्तर

33

.httpasswd फ़ाइलें निर्दिष्ट हैश फ़ंक्शन के आधार पर केवल एक विशिष्ट प्रारूप के साथ टेक्स्ट फ़ाइलें हैं। आप MD5 उपयोग कर रहे हैं वे इस तरह दिखेगा:

foo:$apr1$y1cXxW5l$3vapv2yyCXaYz8zGoXj241 

लॉगिन, एक कॉलन,, $ apr1 $, नमक और 1000 बार md5 बेस 64 के रूप में एन्कोड है यही कारण है कि। आप SHA1 का चयन करते हैं वे इस तरह दिखेगा:

foo:{SHA}BW6v589SIg3i3zaEW47RcMZ+I+M= 

लॉगिन, एक कॉलन, स्ट्रिंग {SHA} और SHA1 हैश बेस 64 से एन्कोड किया गया है यही कारण है कि।

आप सिर्फ इस तरह फ़ाइल बना सकते हैं अपनी भाषा या तो MD5 या SHA1 और बेस 64 के एक कार्यान्वयन है:

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

+4

मुझे एमडी 5 प्रारूप पासवर्ड उत्पन्न करने के लिए कोड भी मिला है http://techtalk.virendrachandak.com/using-php-create-passwords-for-htpasswd-file/ –

-1

Trac htpasswd के लिए एक पायथन प्रतिस्थापन के साथ जहाजों, जो मुझे यकीन है कि आप अपनी पसंद की भाषा में पोर्ट कर सकते हैं: htpasswd.py

+0

जो क्रिप्ट मॉड्यूल आयात करता है और इसे सी – hop

+1

में कार्यान्वित किया जाता है यह समाधान "क्रिप्ट" प्रारूप का उपयोग करता है, जो htpasswd के लिए कुछ विकल्पों में से एक है। यह अप्रचलित है और इसका उपयोग नहीं किया जाना चाहिए। – 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> 

फिर, इस पीएचपी-कोड आप के लिए पासवर्ड का सृजन होगा:

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 वेबसाइट पर यह क्या कहता है, आप निम्न विधि में क्रिप्ट() का उपयोग कर सकते हैं:

<?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 फ़ाइलों में क्रिप्ट प्रारूप हैशिंग अप्रचलित है और इसका उपयोग नहीं किया जाना चाहिए । वर्तमान डिफ़ॉल्ट एमडी 5 संस्करण है। – bitmusher