تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[سؤال] إستفسار عن البحث في حقول تم تشفيرها
#1
السلام عليكم ورحمة الله وبركاته
في تجربة تشفير البيانات في قاعدة البيانات
لعدم السماح بالاطلاع عليها الا عن طريق البرنامج فقط
أستخدمت قاعدة بيانات اكسس
واستخدمت الدالتين التاليتين للتشفير والفك
كود :
   Public Function Encrypt(ByVal text As String, ByVal key As String) As String
       Try
           Dim crp As New TripleDESCryptoServiceProvider
           Dim uEncode As New UnicodeEncoding
           Dim bytPlainText() As Byte = uEncode.GetBytes(text)
           Dim stmCipherText As New MemoryStream
           Dim slt() As Byte = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
           Dim pdb As New Rfc2898DeriveBytes(key, slt)
           Dim bytDerivedKey() As Byte = pdb.GetBytes(24)

           crp.Key = bytDerivedKey
           crp.IV = pdb.GetBytes(8)

           Dim csEncrypted As New CryptoStream(stmCipherText, crp.CreateEncryptor(), CryptoStreamMode.Write)

           csEncrypted.Write(bytPlainText, 0, bytPlainText.Length)
           csEncrypted.FlushFinalBlock()
           Return Convert.ToBase64String(stmCipherText.ToArray())
       Catch ex As Exception
           '  Throw
       End Try
   End Function
   Function Decrypt(ByVal text As String, ByVal key As String) As String
       Dim crp As TripleDESCryptoServiceProvider
       Try
           crp = New TripleDESCryptoServiceProvider
           Dim uEncode As New UnicodeEncoding
           Dim bytCipherText() As Byte = Convert.FromBase64String(text)
           Dim stmPlainText As New MemoryStream
           Dim stmCipherText As New MemoryStream(bytCipherText)
           Dim slt() As Byte = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
           Dim pdb As New Rfc2898DeriveBytes(key, slt)
           Dim bytDerivedKey() As Byte = pdb.GetBytes(24)
           crp.Key = bytDerivedKey
           crp.IV = pdb.GetBytes(8)

           Dim csDecrypted As New CryptoStream(stmCipherText, crp.CreateDecryptor(), CryptoStreamMode.Read)
           Dim sw As New StreamWriter(stmPlainText)
           Dim sr As New StreamReader(csDecrypted)
           sw.Write(sr.ReadToEnd)
           sw.Flush()
           csDecrypted.Clear()
           crp.Clear()
           Return uEncode.GetString(stmPlainText.ToArray())
       Catch ex As Exception
           'Throw
       End Try
   End Function


وجرت الامور تمام من اضافة وتعديل وعرض 
ولكن توقفت امام عملية البحث 
فقد كنت استخدم الكود التالي ويعمل تمام بدون مشاكل
كود :
   Private Sub TextBox5_TextChanged(sender As Object, e As EventArgs) Handles TxtSearch.TextChanged
       Dim sql As String = ""
       If TxtSearch.Text.Length = 0 Then
           sql = "select * from Table1 order by ID"
       Else
           Select Case CmboSearch.SelectedIndex
               Case 0

                   sql = "select * from Table1 where username like '%" & TxtSearch.Text.Trim & "%" & "'" & " order by username"
               Case 1
                   sql = "select * from Table1 where phone like '%" & TxtSearch.Text.Trim & "%" & "'" & " order by phone"
               Case 2
                   sql = "select * from Table1 where adress like '%" & TxtSearch.Text.Trim & "%" & "'" & " order by adress"
           End Select
       End If
       FillDGV(DGV, sql)

   End Sub

وقد كنت استخدم دالة لملئ الDGV 
وهى كالتالي ولكن لم استطع تطويعها مع البيانات المشفرة
كود :
 Public Sub showdgv(ByVal Pudgv, ByVal sql)
       ' Dim Pudgv As DataGridView
       Dim adp As New OleDb.OleDbDataAdapter(sql, con)
       Dim ds As New DataSet
       adp.Fill(ds)
       Dim dt = ds.Tables(0)

       Pudgv.AutoGenerateColumns = False
       Pudgv.DataSource = dt.DefaultView
   End Sub

فاستخدمت الطريقة التالية ونجحت 
كود :
 Public Function FillDGV(DGV As DataGridView, Sql As String)
       DGV.Rows.Clear()

       Dim adp As New OleDb.OleDbDataAdapter(Sql, con)
       Dim ds As New DataSet
       adp.Fill(ds)
       Dim dt = ds.Tables(0)
       For i = 0 To dt.Rows.Count - 1
           DGV.Rows.Add()
           DGV.Rows(i).Cells(0).Value = (dt.Rows(i).Item("id"))
           DGV.Rows(i).Cells(1).Value = Decrypt(dt.Rows(i).Item("Username"), "vb.net")
           DGV.Rows(i).Cells(2).Value = Decrypt(dt.Rows(i).Item("phone"), "vb.net")
           DGV.Rows(i).Cells(3).Value = Decrypt(dt.Rows(i).Item("adress"), "vb.net")

           Dim PIC_() As Byte = CType(dt.Rows(i).Item("Pic"), Byte())
           Dim MS As New MemoryStream(PIC_)
           DGV.Rows(i).Cells(4).Value = Image.FromStream(MS)
       Next
   End Function

فأرجو المساعدة في عملية البحث وتحديدا استخدم like
وهناك امر اخر وهو عرض الصورة من الdgv الى picbox   هل هناك طريقة للعرض مباشرة دون جلب الصورة من القاعدة بدلالة id الصف مثلا

ارفقت المثال الذي اعمل عليه 
وجزاكم الله خيرا


الملفات المرفقة
.rar   Test_Search_Encrypt_Decrypt.rar (الحجم : 80.68 ك ب / التحميلات : 29)
لا إله إلا الله وحده لا شريك له له الملك وله الحمد وهو على كل شئ قدير
سبحان الله وبحمده سبحان الله العظيم
سبحان الله والحمد لله ولا إله إلا الله والله أكبر ولا حول ولا قوة إلا بالله العلى العظيم
رب أغفر لي 

الرد }}}
تم الشكر بواسطة:


الردود في هذا الموضوع
إستفسار عن البحث في حقول تم تشفيرها - بواسطة princelovelorn - 03-10-18, 01:30 PM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [VB.NET] استفسار بخصوص البحث في RichTextBox SerialPort dubai.eig 2 660 18-06-25, 11:09 AM
آخر رد: dubai.eig
Rainbow [كود] البحث تلقائياً عند التبديل بين الـ RadioButton محمد مسافر 8 690 04-10-24, 02:33 AM
آخر رد: Taha Okla
Rainbow [كود] البحث وتحريك اسهم الداتا جريدفيو عند البحث محمد مسافر 2 577 19-09-24, 01:14 AM
آخر رد: محمد مسافر
  مساعدة البحث بين تاريخين أبووسم 3 540 16-08-24, 01:37 PM
آخر رد: أبووسم
  البحث بالأسم الأول فقط heem1986 6 624 03-08-24, 04:17 PM
آخر رد: heem1986
  [VB.NET] تجاهل التشكيل من الأسماء عند البحث في التيكست بوكس Khalil chiha 3 525 01-08-24, 10:28 PM
آخر رد: Khalil chiha
  يوجد خطاء فى كود البحث بواستطة الكمبوبوكس واجراء مخزن new_programer 4 401 06-07-24, 12:05 AM
آخر رد: Zuhare
  البحث بين تاريخين مع الوقت - من بداية اليوم - حتى اخر اليوم moh61 3 599 12-06-24, 08:00 PM
آخر رد: Taha Okla
  إستفسار حول فكرة ترحيل طلاب الأقسام عبد العزيز البسكري 6 501 06-06-24, 01:06 AM
آخر رد: العتيق
  أريد البحث بإستخدام أي جزء من الكلمة و ليس أول جزء منها . CoderMM 3 600 17-04-24, 01:19 AM
آخر رد: Taha Okla

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


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