الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

اريد شرح للدالة crypt

مغلق
بدأه abkareno في 25 مارس 2006 · 3 رد · 730 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع
<?php
$password = crypt('mypassword'); // let the salt be automatically generated

/* You should pass the entire results of crypt() as the salt for comparing a
   password, to avoid problems when different hashing algorithms are used. (As
   it says above, standard DES-based password hashing uses a 2-character salt,
   but MD5-based hashing uses 12.) */
if (crypt($user_input, $password) == $password) {
   echo "Password verified!";
}
?>

الكود بيمشي وكل حاجه بس انا مش فاهم ليه وضعنا $password في الكود تبع if ولا هي كل مره نمرر ليه مثلا pass تطلعها حاجه تانيه

الي فاتت ديه ممكن تتفهم وممكن استخدمها من غير ما افهما بس بقيت الدالة عيزه فهم يريت حد يتكرم ويشرحها

<?php
if (CRYPT_STD_DES == 1) {
   echo 'Standard DES: ' . crypt('rasmuslerdorf', 'rl') . "\n";
}

if (CRYPT_EXT_DES == 1) {
   echo 'Extended DES: ' . crypt('rasmuslerdorf', '_J9..rasm') . "\n";
}

if (CRYPT_MD5 == 1) {
   echo 'MD5:          ' . crypt('rasmuslerdorf', '$1$rasmusle$') . "\n";
}

if (CRYPT_BLOWFISH == 1) {
   echo 'Blowfish:    ' . crypt('rasmuslerdorf', '$2a$07$rasmuslerd...........$') . "\n";
}
?>

يابن ادم ولدتك امك باكياً والناس حولك سروراً فعمل لي يوم اذا بكوا في يوم موتك ضاحكاً مسروراً

اطلب اي ملف Testking او كتاب من كتب ميكروسوفت في اي مجال

#3

الدالة crypt محتاجة اساس تبنى عليه تشفيرها و هو الـ salt الى بتاخده كـ prameter ثانى

لكن لو متمش تمرير الـ salt , فبتقوم بأنتاج واحد عشوائى, و بالتالى لو جربت الكود التالى اكتر من مرة و فى كل مرة تسجل النواتج حتلاقى ان مفيش ولا ناتج متشابه

echo crypt('mypassword') . '
' . crypt('mypassword') . '
' . crypt('mypassword');

المثال الثانى الى انت ذكرته كان بيوضح انواع التشفير الممكنة و الفرق بينها لا اكثر

اما عن المثال الأول و هو الأهم:

اول حاجة انت بتشفر كلمة السر بأستخدام salt عشوائى بتنتجه الدالة نفسها و بعد كدة انت بتحفظها فى قاعدة البيانات مثلا

و ساعة لما تحتاج تعمل تسجيل دخول للمستخدم دة فى وقت تانى فبتستعين بالباسورد المحفوظ عندك قبل كدة عشان تستخلص منه الـ salt الى حتقوم على اساسه المقارنة

المثال التالى مش حيدى نتيجة ايجابية

if (crypt($user_input) == $password) {
   echo "Password verified!";
}

لاحظ ان password هو المحفوظ فى قاعدة البيانات من قبل و user_input هو الباسورد الى ادخله المستخدم فى الفورم

عشان كدة فى المثال الى انت ذكرته استخدم الـ password المخزن فى قاعدة البيانات كـ salt

<?php

if (crypt($user_input, $password) == $password) {
  echo "Password verified!";
}
?>

الفكرة تكمن فى ان الـ salt بيكون محفوظ فى اول الكلمة المشفرة(password) فبتقوم الدالة crypt بأستخلاصه منها و تشفر الكلمة user_input على اساسها و دة الى كان بيحاول يوضحه فى المثال الثانى ايضا

Web Citizen

ShrefInLife.gif

__________

General blog : Shref In Life

هذا الموضوع مغلق.

مواضيع مشابهة