شبكة شباب IT ترحب بالزوار الكرام

اهلا وسهلا بك في شبكة و منتديات شباب IT ترحب بالزوار الكرام وتدعوكم للتسجل معنا ..

انضم إلى المنتدى ، فالأمر سريع وسهل

شبكة شباب IT ترحب بالزوار الكرام

اهلا وسهلا بك في شبكة و منتديات شباب IT ترحب بالزوار الكرام وتدعوكم للتسجل معنا ..

شبكة شباب IT ترحب بالزوار الكرام

هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.
شبكة شباب IT ترحب بالزوار الكرام

منتديات شباب IT للتكنولوجيا معنى أخر ...

طرق التشفير في قواعد البيانات MySQL Get-1-2010-almlf_com_sk7z3hec


    طرق التشفير في قواعد البيانات MySQL

    avatar
    ViRuSMaN
    المدير العام
    المدير العام


    ذكر
    تاريخ التسجيل : 31/07/2009
    تاريخ الميلاد : 01/01/1988
    عدد المساهمات : 72
    العمر : 36
    الموقع : https://mmit.yoo7.com

    طرق التشفير في قواعد البيانات MySQL Empty طرق التشفير في قواعد البيانات MySQL

    مُساهمة من طرف ViRuSMaN الأربعاء نوفمبر 25, 2009 3:09 am

    السلام عليكم ورحمة الله وبركاته ...

    أريد أن أوضح كيفية حفظ البيانات مشفرة بداخل القواعد MySQL … أي كيف نقوم مثلاً بعمل جدول خاص بالمستخدمين وكل مستخدم تكون الكلمة السرية له مشفرة … كيف يمكن فعل ذالك طرق التشفير في قواعد البيانات MySQL Unsure

    هناك ثلاث طرق تسخدم في تشفير البيانات في قاعده البيانات MySQL:

    الأولى بإستعمال التشفير (أو Hash) المعروفة MD5
    الثانية بإستعمال التشفير (أو Hash) المعروفة SHA1
    الثالثة بإستعمال التشفير AES، حيث يستعمل 128 بت.

    ملاحظة: هناك طرق أخرى ولكن موضوعي يشرح الثلاث طرق أعلاه فقط ....

    الطريقه الاولي :

    التشفير باستخدام MD5 :

    الآن لنرى كيف نقوم بعمل ذلك … سنبدأ مع طريقة MD5 … قم بالبداية بإنشاء جدول على أن يكون حجم حقل الكلمة السرية بـ 32 حرف/رمز/رقم، كما يلي:


    CREATE TABLE user_md5 (
    username VARCHAR(16), password VARCHAR(32)
    );


    قمنا بعمل جدول يتكون من حقلين، حقل يخص اسم المستخدم وحقل يخص الكلمة السرية له

    الآن لنقوم بإضافة بيانات تجريبية له، مثلاً أسم مستخدم binary وكلمة سرية له ولتكن binary أيضاً نقوم بذلك كالآتي:

    mysql> INSERT INTO user_md5 VALUES ('binary',MD5('binary') );
    Query OK, 1 row affected (0.03 sec




    كما تلاحظون أستعملنا الدالة MD5 عند إدخالنا للكلمة السرية، وذلك لكي يتم تشفيرها بواسطة MD5

    الآن لنقوم بعرض المدخلات وهل تم تشفيرها أم لا، نفذ الأمر التالي:

    mysql> SELECT * FROM user_md5 where username = 'binary' AND password=MD5('binary');
    +-----------+----------------------------------+
    | username | password |
    +-----------+----------------------------------+
    | binary | 9d7183f16acce70658f686ae7f1a4d20 |
    +-----------+----------------------------------+
    1 row in set (0.02 sec)


    كما تلاحظون تمت عملية التشفير للكلمة السرية binary الى الرموز 9d7183f16acce70658f686ae7f1a4d20 حسب خوارزمية الـ MD5 التي أستعملناها
    الطريقه الثانيه :
    التشفير باستخدام SHA1 :
    الآن لنقوم بتجربة الـ SHA1 بنفس الطريقة لنقم بإنشاء الجدول ولنسميه هذه المرة user_sha1 ويجب أن نحدد حجم حقل الكلمة السرية بـ 40 حرف/رمز/رقم، كما في الأمر:


    mysql> CREATE TABLE user_sha1(
    username VARCHAR(16), password VARCHAR(40)
    );
    Query OK, 0 rows affected (0.00 sec



    الآن لنقوم بإضافة المستخدم binary والكلمة السرية binary أيضاً كما يلي:


    mysql> INSERT INTO user_sha1 VALUES ('binary',SHA1('binary') );
    Query OK, 1 row affected (0.00 sec



    كما تلاحظون هذه المرة حين قمنا بإدخال الكلمة السرية، أستعملنا الدالة SHA1، وذلك لكي يتم تشفيرها بواسطة SHA1

    الآن لنقوم بعرض المدخلات وهل تم تشفيرها أم لا، نفذ الأمر التالي:

    mysql> SELECT * FROM user_sha1 where username = 'binary' AND password=SHA1('binary');
    +----------+------------------------------------------+
    | username | password |
    +----------+------------------------------------------+
    | binary | 7e57cfe843145135aee1f4d0d63ceb7842093712 |
    +----------+------------------------------------------+
    1 row in set (0.00 sec



    الآن لنقوم بتجربة الـ AES بنفس الطريقة لنقم بإنشاء الجدول ولنسميه هذه المرة user_aes ويجب أن نحدد هذه المرة نوع الحقل على إنه من نوع BLOB، كما في الأمر:



    mysql> create table user_aes (
    username VARCHAR(16), password BLOB
    );

    Query OK, 0 rows affected (0.00 sec



    لآن عند إضافة حقل الى الجدول الخاص بـ AES سنقوم بإستعمال كلمة سرية ومفتاح سري لكي نستعمله بعملية التشفير أذن لنقوم بإضافة المستخدم binary والكلمة سرية له binary والمفتاح الخاص به my_string_key، من خلال الأمر التالي:


    mysql> INSERT INTO user_aes VALUES ('binary',AES_ENCRYPT('binary','my_string_key') );
    Query OK, 1 row affected (0.00 sec)

    كما تلاحظون هذه المرة حين قمنا بإدخال الكلمة السرية، أستعملنا الدالة AES_ENCRYPT، وذلك لكي يتم تشفيرها بواسطة AES
    الآن لنقوم بعرض المدخلات وهل تم تشفيرها أم لا، نفذ الأمر التالي:

    mysql> SELECT * FROM user_aes WHERE username='binary' AND password=AES_ENCRYPT('binary','my_string_key');
    +-----------+------------------+
    | username | password |
    +-----------+------------------+
    | binary | Nlu-�/�T��po�> |
    +-----------+------------------+
    1 row in set (0.00 sec)

    - يوجد دالة AES_DECRYPT قوموا بتجربتها لإستعادة الكلمة السرية المشفرة
    روابط اضافيه :http://dev.mysql.com...-functions.html
    http://dev.mysql.com...onnections.html
    طرق التشفير في قواعد البيانات MySQL Smile


    This post has been edited by المبرمج: 14 September 2009 - 09:35 PM


      الوقت/التاريخ الآن هو الخميس مايو 16, 2024 3:31 pm