اذهب إلى المحتوى

السؤال

نشر

لدي صفحة تسجيل .aspx ، مربوطة بقاعدة بيانات، أريد تشفير كلمات المرور عند وضعها في قاعدة البيانات بواسطة md5 أو sha1، فهل يمكن شرح الأمر ببساطة؟
وأريد أن أعلم أيضاً بشكل عام ومبسط ما هي أنواع التشفير، أعني هنالك md5 و sha1 وماذا أيضاً؟ وما الفرق بينهم جميعاً؟
طبعاً أستخدم لغة C# في برمجة السيرفر.
شكراً للمساعدة :)

Recommended Posts

  • 1
نشر

توفر تقنية MD5 إمكانية تشفير النصوص بطريقة لا يمكن فيها الرجوع للنص الأصلي بحيث تتم المقارنة بين النصوص بعد التشفير ولا يتم التعامل مع النصوص بصيغتها الأصلية.
يتم تشفير النصوص باستخدام الصف MD5 في C# وإنشاء غرض منه من النوع MD5CryptoServiceProvider:
كما في المثال التالي:

MD5 md5 = new MD5CryptoServiceProvider();

ومن ثم استدعاء الدالة CopmuteHash وتمرير معامل Argument وهو النص المراد تشفيره باستخدام ASCIIEncoding.ASCII.GetBytes(text).

//compute hash from the bytes of text
        md5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(text));

بعد ذلك قم بأخذ القيمة من الغرض md5 عن طريق الدالة Hash حيث أن القيمة المرتجعة هي عبارة مصفوفة من byte.

   byte[] result = md5.Hash;

في النهاية أنشئ StringBuilder واعمل append للنتيجة كما في المثال التالي:

  public static string MD5Hash(string text)
    {
        MD5 md5 = new MD5CryptoServiceProvider();

        //compute hash from the bytes of text
        md5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(text));

        //get hash result after compute it
        byte[] result = md5.Hash;

        StringBuilder strBuilder = new StringBuilder();
        for (int i = 0; i < result.Length; i++)
        {
            //change it into 2 hexadecimal digits
            //for each byte
            strBuilder.Append(result[i].ToString("x2"));
        }
        return strBuilder.ToString();
    }

تشفير نصوص باستخدام MD5

  • 1
نشر

يمكنك استخدام هذه الدالة للتشفير باستخدم MD5 في لغة C#:

private string md5(string sPassword)
{
    System.Security.Cryptography.MD5CryptoServiceProvider x = new System.Security.Cryptography.MD5CryptoServiceProvider();
    byte[] bs = System.Text.Encoding.UTF8.GetBytes(sPassword);
    bs = x.ComputeHash(bs);
    System.Text.StringBuilder s = new System.Text.StringBuilder();
    foreach (byte b in bs)
    {
        s.Append(b.ToString("x2").ToLower());
    }
    return s.ToString();
}

وللتجربة يمكنك استخدام الشيفرة البرمجية التالية بلغة HTML:

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <asp:Label ID="Label1" runat="server" Text="Label">Enter Password</asp:Label>
    <asp:TextBox ID="txtPassword" runat="server" TextMode="Password"></asp:TextBox><br />
    <asp:Label ID="Label2" runat="server" Text="" Font-Bold="true"></asp:Label><br />
    <asp:Button ID="Button1" runat="server" Text="Convert to MD5" 
        onclick="Button1_Click" />
</asp:Content>

وفي حدث زر Button1 ضع الشيفرة التالية ليتم عرض كود MD5:

Label2.Text = md5(txtPassword.Text);

ولاستعمال الطريقة في موقعك يمكنك تشفير كلمات المرور باستخدام خوارزمية MD5 حيث أنه كلما وضع شخص كلمة المرور ستشفرها وتقارنها مع شيفرة MD5 الموجودة داخل قاعدة البيانات.

الفرق بين أنواع التشيفرات المختلفة هي الخوارزمية المستخدمة في التشفير ويعتبر MD5 و SHA-1 أشهرها.

المصادر 1 2

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...