سؤال

ما هو أسرع بعد تأمين طريقة لتشفير كلمات المرور في (PHP المفضل) ، أيهما تختار هو المحمولة?

وبعبارة أخرى, إذا كنت في وقت لاحق ترحيل موقع الويب الخاص بي إلى ملقم آخر سوف بلدي كلمات السر الاستمرار في العمل ؟

طريقة أنا أستخدم الآن كما قيل لي تعتمد على الدقيق إصدارات المكتبات مثبتة على الملقم.

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

المحلول

إذا كنت اختيار طريقة التشفير الخاص بك نظام تسجيل الدخول ثم السرعة ليست صديقك كان " جيف " أن-و-frow مع توماس Ptacek عن كلمات السر ، الختام كان يجب عليك استخدام الأبطأ والأكثر أمانا طريقة التشفير تستطيع.

من توماس Ptacek بلوق:
السرعة هو بالضبط ما كنت لا تريد في كلمة دالة البعثرة.

الحديث المرور مخططات للهجوم مع تدريجي كلمة السر المفرقعات.

تدريجي المفرقعات لا precalculate كل شيء ممكن تصدع كلمات السر.وهم يعتبرون كل تجزئة كلمة المرور بشكل فردي, و تتغذى على القاموس من خلال تجزئة كلمة المرور تعمل بنفس الطريقة PHP الخاص بك تسجيل الدخول صفحة.قوس قزح الجدول المفرقعات مثل [أفكرك استخدام الفضاء لمهاجمة وكلمات السر.تدريجي المفرقعات مثل جون السفاح الكراك ، LC5 العمل مع الوقت:الإحصاء و حساب.

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

أفضل يمكنك تحسين تجزئة كلمة المرور الخاصة بك وظيفة أسرع تجزئة كلمة المرور الخاصة بك وظيفة يحصل ، الأضعف المخطط الخاص بك هو.MD5 و SHA1, حتى التقليدية كتلة الأصفار مثل ديز مصممة لتكون سريعة.MD5, SHA1, ديس ضعيفة التجزئة كلمة المرور.على وحدات المعالجة المركزية الحديثة الخام التشفير اللبنات مثل DES و MD5 يمكن bitsliced, vectorized و بشكل متوازي إلى جعل البحث كلمة بسرعة البرق.لعبة على FPGA تطبيقات تكلف مئات الدولارات.

نصائح أخرى

أنا مع بطرس.المطور لا يبدو أن نفهم كلمات السر.كلنا اختيار (و أنا مذنب من هذا أيضا) MD5 أو SHA1 لأنها سريعة.التفكير حول هذا الموضوع ('كوز شخص ما مؤخرا أشار إلى أنه بالنسبة لي) أن لا يجعل من أي معنى.يجب أن يكون اختيار خوارزمية التجزئة التي غبي بطيء.أعني على مقياس من الأشياء مشغول الموقع تجزئة كلمات السر ماذا ؟ كل 1/2 دقيقة ؟ من يهتم إذا كان اتخاذ 0.8 ثانية مقابل 0.03 ثانية خادم الحكمة ؟ لكن إضافية بطء ضخمة لمنع جميع أنواع شائعة الغاشمة forcish الهجمات.

من قراءتي ، bcrypt تم تصميمه خصيصا من أجل تأمين تجزئة كلمة المرور.أنها تقوم على السمكة المنتفخة ، و هناك العديد من التنفيذ.

PHP, تحقق من PHPPass http://www.openwall.com/phpass/

لأحد به .صافي, تحقق BCrypt.NET http://derekslager.com/blog/posts/2007/10/bcrypt-dotnet-strong-password-hashing-for-dotnet-and-mono.ashx

وتجدر الإشارة إلى أن كنت لا تريد أن تشفير كلمة المرور التي تريد تجزئة ذلك.

كلمات السر المشفرة يمكن فك تشفير, السماح لشخص يرى كلمة المرور.تجزئة هو الطريقة العملية لذلك المستخدم كلمة المرور الأصلية هو (مشفر) ذهب.


أما بالنسبة خوارزمية يجب عليك أن تختار - استخدام المقبولة حاليا معيار واحد:

  • SHA-256

و عند تجزئة كلمة مرور المستخدم ، يجب التأكد أيضا تجزئة في بعض الدول الأخرى غير المرغوب فيه مع ذلك.على سبيل المثال:

  • كلمة المرور: password1
  • الملح: PasswordSaltDesignedForThisQuestion

إلحاق الملح المستخدم كلمة المرور:

String s = HashStringSHA256("password1PasswordSaltDesignedForThisQuestion");

مهما فعلت لا تكتب الخاصة بك خوارزمية التشفير.تفعل هذا سوف يضمن تقريبا (إلا إذا كنت مبرمجة) أن يكون هناك عيب في الخوارزمية التي من شأنها أن تجعل تافهة للقضاء.

والنظر في استخدام bcrypt يتم استخدامه في العديد من الأطر الحديثة مثل laravel.

أنا ليس بالضرورة أن تبحث عن أسرع ولكن توازن لطيف, بعض من الخادم أن هذا الرمز يتم تطويرها إلى حد ما بطيئة السيناريو الذي التجزئة و المتاجر كلمة المرور هو أخذ 5-6 ثوان لتشغيل, و لقد ضاقت عليه إلى تجزئة (إن تعليق تجزئة تشغيله في 1-2 ثانية).

فإنه لا يجب أن تكون الأكثر أمانا ، أنا لا codding في بنك (الآن) ولكن أنا بالتأكيد لن تخزين كلمات السر كما نص عادي.

password_hash ( string $password , int $algo [, array $options ] ).(5 PHP >= 5.5.0, PHP 7)

password_hash() بإنشاء كلمة سر جديدة التجزئة باستخدام قوية في اتجاه واحد خوارزمية التجزئة.password_hash() متوافق مع سرداب().ولذلك التجزئة كلمة المرور التي تم إنشاؤها بواسطة سرداب() يمكن استخدامها مع password_hash().

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