2017-02-11 13 views
-3

私のハッシュmd5 + salt、saltはアプリケーション内であらかじめ作成されています。VB.NET DataGridViewでハッシュを復号化して表示する

Function md5hash(value As String) As Byte() 
    Return md5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(value)) 
End Function 

Function decrypt(encryptedString As String, key As String) As String 
    de5.Key = md5hash(key) 
    de5.Mode = CipherMode.ECB 

    Dim buffer As Byte() = Convert.FromBase64String(encryptedString) 

    Return ASCIIEncoding.ASCII.GetString(de5.CreateDecryptor().TransformFinalBlock(buffer, 0, buffer.Length)) 
End Function 

ここで、ハッシュされた(暗号化された)データベース内のデータを取得します。私はデータを取得することができますが、ハッシュします。同等の文字列ではありません。ここに私のDataGridViewコードです。

connection() 
    Dim dataAdapter As New MySqlDataAdapter 
    Dim dataTable As New DataTable 
    Dim bSource As New BindingSource 

Try 
     conn.Open() 

     Dim query As String 
     query = "SELECT column07 AS 'Company ID', column08 AS Lastname, column12 AS Firstname, column06 AS Middlename, column02 AS 'Contact No.', column05 AS 'Current Address', column14 AS 'Permanent Address' FROM dbtest.table01 WHERE column15 = '" & encrypt("Single", salt) & "'" 
     command = New MySqlCommand(query, conn) 'I think this is the part where I put my decrypt method. 
     dataAdapter.SelectCommand = command  'Maybe here. 
     dataAdapter.Fill(dataTable)    'I dont know where and how 
     bSource.DataSource = dataTable   'Please help thanks! 
     DataGridView_Accounts.DataSource = bSource 
     dataAdapter.Update(dataTable) 

     conn.Close() 
    Catch ex As Exception 
     MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) 
    Finally 
     conn.Dispose() 
    End Try 

クエリは正常に動作しています。その復号化(デハッシング)はそうではありません。

+2

ハッシュは一方向の暗号化であるため、復号化できません。また、MD5は今日の基準によるウェアハッシュ法です。 – Plutonix

+0

私は言っているように、検索は機能しています。ハッシュされたデータを使用します。それはラベル/テキストボックスへの検索にも取り組んでいます。私はちょうどそれを取得し、datagridviewで表示する方法を知りません。 – Maki

+2

私たちは 'de5'が何であるか知りません。あなたがやっていることの多くを' encrypt'が理解するのを見ることはできません。テキストとタイトルに目を向けると、ハッシュを「デハッシュ」することはできません。私はあなたが暗号化されていると思うし、MD5は塩をハッシュするためのものですか? – Plutonix

答えて

0
connection() 
Dim dataAdapter As New MySqlDataAdapter 
Dim dataTable As New DataTable 
Dim bSource As New BindingSource 

Try 
    conn.Open() 

    Dim query As String 
    query = "SELECT column07 AS 'Company ID', column08 AS Lastname, column12 AS Firstname, column06 AS Middlename, column02 AS 'Contact No.', column05 AS 'Current Address', column14 AS 'Permanent Address' FROM dbtest.table01 WHERE column15 = '" & encrypt("Single", salt) & "'" 
    command = New MySqlCommand(query, conn) 
    dataAdapter.SelectCommand = command 
    dataAdapter.Fill(dataTable)  
    bSource.DataSource = dataTable  
    DataGridView_Accounts.DataSource = bSource 
    dataAdapter.Update(dataTable) '<===== remove this 

    For i As Integer = 0 To dataTable.Rows.Count - 1 
      dataTable.Rows(i)("Company ID") = decrypt(dataTable.Rows(i)("Company ID"), salt) 
      'place all the columns here 1 by 1 =) 
    Next 

    conn.Close() 
Catch ex As Exception 
    MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) 
Finally 
    conn.Dispose() 
End Try 
関連する問題