هي سلسلة عشوائية رمز التحقق الجيد
-
01-10-2019 - |
سؤال
أقوم بإنشاء رمز التحقق لاستخدامه لتفعيل الحساب. ربما رأيت هذا النوع من الأشياء من قبل.
سؤالي: إذا كنت سأقوم بإنشاء هذا الرمز بصيغة معقدة مثل هذا:
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/