سؤال

كنت هنا بالأمس وحصلت على بعض الإجابات الرائعة حقًا. أخذت ما حصلت عليه ووضعته معًا ، ما أعتقد أنه سيكون خوارزمية آمنة إلى حد ما. أواجه مشكلة في استخدام Blowfish مع حلقة تولد الملح.

أنا أستخدم أحرف BASE64 و LOOP للحصول على سلسلة عشوائية. أريد أن آخذ هذه السلسلة التي تم إنشاؤها وإدخالها في وظيفة سرداب كملح.

نظرًا لأن الوثائق حول Blowfish متناثرة جدًا ولم تذكرها مستندات PHP حقًا ، فأنا أطرح في الظلام هنا.

الشيء الغريب حقًا هو إذا قمت بتشغيل هذا الرمز بالطريقة التي سيحدثها الآن ، فسيتم ذلك ليس يفشل. إزالة أيضاً "2A $ 07 $" من فوق الحلقة أو من وظيفة سرداب وستفعل ذلك بشكل متقطع إرجاع سلسلة مشفرة. فهمي لأسماك النفخ هو أن السلسلة المشفرة يجب ابدأ بـ "$ 2A $ 07 $" وينتهي في "$" وبالتالي التسلسل في وظيفة crypt. لا أحتاج حقًا إلى سلسلة البداية أعلى من الحلقة وأردت فقط التخلص منها.

أود أيضًا توضيحًا حول أفضل الممارسات في تخزين الملح العشوائي ، إما في قاعدة البيانات أو عن طريق تخزين إخراج وظيفة سرداب في قاعدة البيانات؟

بالأمس ، لم يكن هناك رمز حقيقي يتم طرحه ، فقط مناقشة. أرغب في وضع بعض التعليمات البرمجية معًا اليوم ولدي شيء آمن إلى حد ما. إذا تمكن أي شخص من الخروج بخوارزمية أفضل ، فأنا منفتح دائمًا.

$base64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
$salt = '$2a$07$';

for($i=0; $i<60; $i++)
{
    $salt .= $base64[rand(0,63)];
}

return crypt('password', '$2a$07$'.$salt.'$');
هل كانت مفيدة؟

المحلول

يبدو أن crypt() يكره + Char in the Salt ، والكثير من chars الخاصة الأخرى (*, % إلخ). إذا قمت بتصفيةها ، فيجب أن تعمل على كل تجربة (ولا حاجة لتكرار سلسلة معرف الملح).

نصائح أخرى

أعلم أن هذا السؤال هو تاريخ قديم من الناحية العملية الآن ، ولكن لصالح أي شخص يجده من خلال البحث عن Google ، هناك وصف مفصل جدًا لكيفية عمل أملاح Bcrypt/Eksblowfish في إجابة هذا السؤال:

لماذا يولد سرداب/أسماك النفخ نفس التجزئة بأملاحين مختلفين؟

الجواب المختصر هو ، كما قال CAF ، يستخدم الأبجدية BASE64 مكونة من [a-zA-Z0-9./], ، مع $ كما NULL (وليس 0) الطرف إنهاء/الحشو. إذا كنت تستخدم أي أحرف خارج هذا النطاق ، أو أ $ في وقت مبكر جدا ، سوف يكون إما خطأ أو لا يفسر كامل الملح.

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