تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[سؤال] SQL 2019
#7
(26-01-22, 12:38 PM)عبدالله الدوسري كتب : بما انك تستخدم SQL DATABASE 2019

استخدم الطريقة :
HashAlgorithm.ComputeHash


أولاً تقوم بتحويل النص العادي (والتي هي كلمة المرور) : تحويلها من نص ( String ) إلى مصفوفة بايتات ( ()Byte )
كود :
Dim PasswordData As Byte() = System.Text.Encoding.UTF8.GetBytes(Me.PasswordTextBox.Text)



ثانياُ : تنشاء متغير باسم ( SHA512 ) من نوع ( System.Security.Cryptography.SHA512Managed )  
وذلك لإستخدام خوارزمية HashAlgorithm ( لتشفير البيانات في إتجاه واحد فقط غير قابل لفك التشفير )
كود :
Dim SHA512 As New System.Security.Cryptography.SHA512Managed


ثالثاً : نستخدم المتغير SHA512 لتشفير البيانات الموجودة في المصفوفة ( PasswordData ) وحفظها في متغير جديد باسم ( PasswordHash )
كود :
Dim PasswordHash As Byte() = SHA512.ComputeHash(PasswordData)



إذا كان صندوق النص ( Me.PasswordTextBox.Text ) يحمل القيمة ( vb4arb.com )
أي ان كلمة المرور = vb4arb.com
بعد عملية التشفير بواسطة الطريقة ComputeHash
النتيجة ستكون كالتالي : وذلك بعد التشفير
لاحظ ان النص الموجود بالأسفل يعبر عن شكل البيانات الموجودة في المصفوفة المشفرة
ولكن المصفوفة المشفرة أساساً ليسة بهذا الشكل ( قمت بتحويلها إلى نص وذلك حتى تتمكن من أخذ فكرة عن شكل الناتج )
كود :
45b6deacb27a617b889f1396da586270a131082c5ad83a9cd916aa72b07c296a43f33290aa9548f9d1b7fbbf169092ca8a25251ea461e688985451d5f8d77d39


******************************************************************************
الطريقة المستخدمة لعرض شكل المصفوفة بشكل نصي :  ( هذا النص البرمجي فقط لشرح شكل المصفوفة وغير مطلوب ,, تم إستخدامة فقط لعرض القيمة الموجودة بالأعلى)
كود :
Dim txt As String = BitConverter.ToString(PasswordHash).Replace("-", "")

******************************************************************************





الآن قم بحفظ قيمة المتغير ( PasswordHash ) والذي يحمل مصفوفة البيانات بعد التشفير
قم بحفظ القيمة في حقل قاعدة البيانات الخاص بكلمة المرور
ويكون نوع الحقل في قاعدة البيانات من نوع ( varbinary ) حصراً

الآن انت تمتلك كلمة مرور محفوظة في قاعدة البيانات ومشفرة ولا يمكن أبداً فك تشفيرها ( لأنها مشفرة بطريقة تشفير بإتجاه واحد ) 
إتجاه واحد يعني تشفير فقط ولا يمكن فك التشفير
بإتجاهين يعني تشفير ويمكن فك التشفير بالعكس


ماذا يمكنك الآن ان تفعل بهذا الحقل ؟؟؟؟
فقط يمكنك إستخدامة للمقارنة فقط

أي بمعنى :

إذا أردت ان تتحقق من صحة كلمة المرور الذي أدخلها المستخدم ( وذلك لعملية تسجيل الدخول للبرنامج مثلاً )

الخطوات كالتالي :

كلمة المرور الصحيحة محفوظة في قاعدة البيانات بشكل مشفر ( تمام )

الآن يحاول المستخدم تسجيل الدخول للبرنامج :
بعد أن يقوم المستخدم بإدخال كلمة المرور
1 - تقوم بإعادة كل الخطوات المذكورة بالأعلى مع كلمة المرور الذي قام المستخدم بإدخالها
كود :
           Dim PasswordData As Byte() = System.Text.Encoding.UTF8.GetBytes(Me.PasswordTextBox.Text)
           Dim SHA512 As New System.Security.Cryptography.SHA512Managed
           Dim PasswordHash As Byte() = SHA512.ComputeHash(PasswordData)
إذا كانت نتيجة الإستعلام صفر ( لم يتم إرجاع اي سجل Row )
هذا يعني ( الرسالة المشهورة ) :

"    اسم المستخدم أو كلمة المرور غير صحيحة   "





الآن انت تمتلك كلمة مرور مشفرة ( التي يحاول المستخدم الآن إستخدامها لتسجيل الدخول  )

لعملية التحقق من صحة كلمة المرور المدخلة
تقوم بإرسال اسم المستخدم مع ( كلمة المرور المشفرة ) إلى قاعدة البيانات في إجراء مخزن مثلاً  وعمل إستعلام عادي
إذا قام الإستعلام بإرجاع نتيجة لك ( هذا يعني أنه وجد اسم المستخدم وكلمة المرور متطابقة ) والنتيجة عبارة عن سجل واحد ( Row ) ناتج من عملية الإستعلام

كود :
    SELECT Username FROM [dbo].[UsersTable]
WHERE [Username] = @UserName AND [Password] = @Password



تتم المقارنة بين كلمات المرور وهي في حالت التشفير
إذا تطابقت ( كلمة المرور المشفرة المدخلة ) مع ( كلمة المرور المشفرة الموجودة في قاعدة البيانات )


إذا دخلت على  ( SQL Server 2019 ) وعند عرضك للجدول في قاعدة البيانات
في الإستعلامات سيظهر الحقل بهذا الشكل



في وضح التحرير سيظهر الحقل بهذا الشكل ( لأنه لا يمكنك تحرير حقل من نوع مصفوفة بشكل يدوي )




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

أتمنى الفكرة تكون واضحة
شكرا اخي الكريم 
الطريقة التي ابحث عنها سهلة جدا وهيا تشغيل  كود في sql  فقط
 Query
كود لتشفير كلمة السر  
وكود للعكس لاظهار كلمة السر 
هذا الكود يشتغل علي كافة المستخدمين بالجدول


الملفات المرفقة صورة/صور
   
الرد }}}
تم الشكر بواسطة:


الردود في هذا الموضوع
SQL 2019 - بواسطة محمد بوقزاحة - 24-01-22, 07:32 PM
RE: SQL 2019 - بواسطة ابو انس - 25-01-22, 08:08 PM
RE: SQL 2019 - بواسطة عدنان الشمري - 25-01-22, 08:30 PM
RE: SQL 2019 - بواسطة محمد بوقزاحة - 25-01-22, 08:52 PM
RE: SQL 2019 - بواسطة ابراهيم ايبو - 25-01-22, 11:11 PM
RE: SQL 2019 - بواسطة عبدالله الدوسري - 26-01-22, 12:38 PM
RE: SQL 2019 - بواسطة محمد بوقزاحة - 27-01-22, 11:22 AM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  هل يجب علي تنصيب الأوفيس 2019 على كمبيوتر العميل إذا كانت قاعدة البيانات Access F.H.M 5 419 15-09-24, 03:01 PM
آخر رد: F.H.M
  مشكلة في visual studio 2019 Adel27213 2 831 03-11-23, 07:51 AM
آخر رد: Adel27213
  [VB.NET] Tool box in vb.net 2019 MOHAMMED ALZWI 0 416 25-07-23, 11:57 AM
آخر رد: MOHAMMED ALZWI
  [Acces2010] اسباب هذه الرسالة في تطبيق فيجوالبيسك 2019 و الاكسيس د جابر 0 442 28-02-23, 11:33 AM
آخر رد: د جابر
  [سؤال] مشكله في ربط الفيجوال بيسك 2019 مع الاكسس 2019 حسن الجلب 3 1,358 19-09-22, 08:34 AM
آخر رد: Taha Okla
  سؤال كيفية اظهار reportviewer فى Visual Studio 2019 mohamed2316 2 1,190 03-08-22, 03:07 AM
آخر رد: mohamed2316
  [سؤال] مشكله في تنصيب فيجوال استوديو 2019 حسن الجلب 3 1,047 02-08-22, 03:44 PM
آخر رد: حسن الجلب
  [سؤال] لينك تحميل برنامج فيجوال استوديو 2019 حسن الجلب 1 941 29-07-22, 08:59 PM
آخر رد: أبو خالد الشكري
Heart [VB.NET] عدم فتح اضافة مكتبة بالفيجوال 2019 العواد الصغير 0 847 29-06-22, 05:47 PM
آخر رد: العواد الصغير
  [VB.NET] مشكلة لم استطع اضافة print form للفيجوال 2019 ولا 2022 bilgacim 2 1,713 12-02-22, 04:49 AM
آخر رد: bilgacim

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم