سؤال

أقوم بإنشاء رمز التحقق لاستخدامه لتفعيل الحساب. ربما رأيت هذا النوع من الأشياء من قبل.

سؤالي: إذا كنت سأقوم بإنشاء هذا الرمز بصيغة معقدة مثل هذا:

md5(md5(time().'helloguys'.rand(0,9999)));

هل هو حقًا أفضل من توليد سلسلة عشوائية من 32 حرفًا وأرقام مثل gj3dI3OGwo5Enf...?

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

المحلول

لا ، استخدام التجزئة ليس أفضل. سيكون أكثر أمانًا (أقل قابلية للتنبؤ) لاختيار 32 حرفًا عشوائيًا. (الأرقام عبارة عن أحرف.) استخدم مولد الأرقام العشوائية الجيدة ("التشفير") ، مع بذرة جيدة (بعض البايتات من /dev /عشوائي). لا تستخدم الوقت كبذرة.

نصائح أخرى

أتفق مع Erickson ، قد تنصحك بالاستخدام

pwgen -1 -s

أمر على *nix الذي سيؤدي المهمة إلى أي إجراء قد تخترعه.

إذا كنت ترغب في إنشاء بعض السلسلة برمجيًا ، فيمكنك إلقاء نظرة على

<?php    
$better_token = md5(uniqid(rand(),1));
?>

هذا يعطي مستوى جيد جدا من العشوائية وقبل التصادم.

إذا كنت بحاجة إلى مستوى أعلى من الأمان ، فقد تفكر في توليد تسلسل عشوائي http://www.random.org/

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