سؤال

هل هناك طريقة برمجية لبناء هتباسود الملفات دون اعتمادا على نظام التشغيل وظائف محددة (أي exec(), passthru())?

هل كانت مفيدة؟

المحلول

.httpasswd الملفات فقط ملفات نصية مع صيغة محددة اعتمادا على وظيفة تجزئة المحدد.إذا كنت تستخدم MD5 انها تبدو مثل هذا:

foo:$apr1$y1cXxW5l$3vapv2yyCXaYz8zGoXj241

هذا هو تسجيل الدخول, القولون, ,$apr1$ الملح و 1000 مرة md5 ترميز base64.إذا قمت بتحديد SHA1 انها تبدو مثل هذا:

foo:{SHA}BW6v589SIg3i3zaEW47RcMZ+I+M=

هذا هو تسجيل الدخول, القولون, سلسلة {إن شاء} و SHA1 تجزئة المشفرة مع base64.

إذا كانت لغتك له تنفيذ أي 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.py.

من ما هو مكتوب في 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

هذا بالطبع سوف الكتابة فوق كامل القائمة ملف, لذلك عليك أن ترغب في القيام ببعض النوع من concatination.

أنا لست متأكدا 100 ٪ هذا العمل, ولكن أنا متأكد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top