كيفية إنشاء تجزئة مثل Htpasswd من Apache باستخدام Java
سؤال
أستخدم "Force MD5 تشفير كلمة المرور" في htpasswd لإنشاء تجزئة على سبيل المثال "123" أحصل عليها:
استخدم htpasswd: 123 => $ Apr1 $ katbkalo $ ewjxrzakpjaxk4thy2jop/
استخدم MD5 Digest: 123 => 202CB962AC59075B964B07152D234B70
من فضلك قل لي كيف يمكنني إنشاء تجزئة مثل Apache htpasswd باستخدام جافا شكرا.
المحلول
يتم ترميز كلمات المرور في Apache .htpasswd باستخدام أ ملح. إذا كنت ترغب في إنشاء كلمات المرور هذه باستخدام Java ، فستحتاج إلى فعل الشيء نفسه. هذا الموقع لديه شرح لخوارزمية الملح/التجزئة المستخدمة في ملفات .htpasswd من Apache ؛ أنا أبحث عن خوارزمية فعلية يمكنك استخدامها وسيقوم بتحرير إجابتي بعد أن أجد واحدة.
تعديل: يبدو أنه سئل من قبل ، هنا على ذلك:
إليك الوثائق من Apache ، إلى جانب رمز المصدر الخاص بهم:
http://httpd.apache.org/docs/2.2/misc/password_encryptions.html
http://svn.apache.org/viewvc/apr/apr-util/branches/1.3.x/crypto/apr_md5.c؟view=co
نصائح أخرى
لقد وجدت حيث قام شخص ما بمعالجة هذا في Java وأصدرته برخصة بيرة. متأخرا أفضل من عدمه، أليس كذلك؟ ربما كان هناك على الأرجح منذ عام 2007 ، لذلك سأفاجأ إذا لم تجدها في النهاية بعد بعض الوقت في عام 2010.
"ميناء جافا بقلم: جوناثان أبي ، jonabbey@arlut.utexas.edu"
"md5crypt.java هو منفذ من خوارزمية تجزئة FreeBSD MD5 الأصلية لـ Poul-Henning Kamp ، مع طرق إضافية لدعم متغير خادم Apache HTTPD لهذه الخوارزمية."
"ستكون السلسلة الناتجة في النموذج" $ APR1 $u003Csalt> $u003Chashed mess> '' '
MD5Crypt هو ما تبحث عنه. ينفذ Apache Htpasswd خوارزميات
الخوارزمية الخاصة بـ Apache باستخدام تكرار (1000 مرة) MD5 Digest لمجموعات مختلفة من 32 بت عشوائي ملح و ال كلمه السر.
import org.apache.commons.codec.digest.Md5Crypt;
...
String enPasswd = Md5Crypt.md5Crypt("your plain password".getBytes());
String htpasswdContent = "your username:" + enPasswd;