[Code Source] R1C Projet – Crypter et Décrypter des données en VB.net




Voici un exemple de code source en VB.net, pour crypter et décrypter des mots de passe stockés dans une base de données MySQL

Fonctions permettant de crypter et décrypter des chaines de caractères

Les deux fonctions suivante peuvent être placées dans un module de votre projet en VB.net. Un simple copier/coller suffit. La seule chose à modifier par la suite est la variable « code » qui contient la clef de cryptage et donc de décryptage de vos données.

Public code As String = "votre clef de cryptage"
Public Function Crypter(ByVal input As String, ByVal pass As String) As String
 Dim AES As New System.Security.Cryptography.RijndaelManaged
 Dim Hash_AES As New System.Security.Cryptography.MD5CryptoServiceProvider
 Dim encrypted As String = ""
 Try
  Dim hash(31) As Byte
  Dim temp As Byte() = Hash_AES.ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes(pass))
  Array.Copy(temp, 0, hash, 0, 16)
  Array.Copy(temp, 0, hash, 15, 16)
  AES.Key = hash
  AES.Mode = Security.Cryptography.CipherMode.ECB
  Dim DESEncrypter As System.Security.Cryptography.ICryptoTransform = AES.CreateEncryptor
  Dim Buffer As Byte() = System.Text.ASCIIEncoding.ASCII.GetBytes(input)
  encrypted = Convert.ToBase64String(DESEncrypter.TransformFinalBlock(Buffer, 0, Buffer.Length))
  Return encrypted
 Catch ex As Exception
  Return Nothing
 End Try
End Function
 
Public Function DeCrypter(ByVal input As String, ByVal pass As String) As String
 Dim AES As New System.Security.Cryptography.RijndaelManaged
 Dim Hash_AES As New System.Security.Cryptography.MD5CryptoServiceProvider
 Dim decrypted As String = ""
 Try
  Dim hash(31) As Byte
  Dim temp As Byte() = Hash_AES.ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes(pass))
  Array.Copy(temp, 0, hash, 0, 16)
  Array.Copy(temp, 0, hash, 15, 16)
  AES.Key = hash
  AES.Mode = Security.Cryptography.CipherMode.ECB
  Dim DESDecrypter As System.Security.Cryptography.ICryptoTransform = AES.CreateDecryptor
  Dim Buffer As Byte() = Convert.FromBase64String(input)
  decrypted = System.Text.ASCIIEncoding.ASCII.GetString(DESDecrypter.TransformFinalBlock(Buffer, 0, Buffer.Length))
  Return decrypted
 Catch ex As Exception
  Return Nothing
 End Try
End Function

Connexion à une base de données MySQL

La connexion à une base de données MySQL nécessite de renseigner le nom du serveur (ou son adresse IP), le nom de la table contenant les données, un identifiant et un mot de passe.

BDD_R1C = "Server=" & My.Settings.MySQL_serveur &
          ";Database=" & My.Settings.MySQL_database &
          ";Uid=" & My.Settings.MySQL_identifiant & 
          ";Pwd=" & My.Settings.MySQL_password & ";"

Crypter les données dans une base de données MySQL

Voici un exemple de code pour utiliser la fonction de cryptage des mots de passe d’un PABX.

Dim table As String = "pabxpass"
Dim Requete As String = "SELECT * From " & table
Dim cnx As New MySqlConnection()
Dim CustomersDataSet As New DataSet()
Dim da As MySqlDataAdapter
Dim cmdBuilder As MySqlCommandBuilder
cnx.ConnectionString = BDD_R1C
cnx.Open()
da = New MySqlDataAdapter(Requete, cnx)
cmdBuilder = New MySqlCommandBuilder(da)
da.Fill(CustomersDataSet, table)
CustomersDataSet.Tables(table).Rows(1)("rma") = Crypter(FormPrincipal.Tb_rma.Text, code)
CustomersDataSet.Tables(table).Rows(1)("mtcl") = Crypter(FormPrincipal.Tb_mtcl.Text, code)
CustomersDataSet.Tables(table).Rows(1)("mtch") = Crypter(FormPrincipal.Tb_mtch.Text, code)
CustomersDataSet.Tables(table).Rows(1)("swinst") = Crypter(FormPrincipal.Tb_swinst.Text, code)
CustomersDataSet.Tables(table).Rows(1)("root") = Crypter(FormPrincipal.Tb_root.Text, code)
da.Update(CustomersDataSet, table)
cnx.Close()

Décrypter les données en lecture d’une base de données MySQL

Voici un exemple de code pour utiliser la fonction de décryptage des mots de passe d’un PABX stocké dans une base de donnée MySQL.

Dim table = "pabxpass"
Dim requete As String = "SELECT * from " & table
Dim cnx As New MySqlConnection()
cnx.ConnectionString = BDD_R1C
cnx.Open()
Dim commande As New MySqlCommand(requete, cnx)
Dim monreader As MySqlDataReader = commande.ExecuteReader()
While monreader.Read()
 rma.text = DeCrypter(monreader("rma").ToString, code)
 mtcl.text = DeCrypter(monreader("mtcl").ToString, code)
 mtch.text = DeCrypter(monreader("mtch").ToString, code)
 swinst.text = DeCrypter(monreader("swinst").ToString, code)
 root.text = DeCrypter(monreader("root").ToString, code)
End While
cnx.Close()

Simple et efficace ce code permet de crypter et décrypter ce que vous voulez 😉




Soyez le premier à commenter

Poster un Commentaire

Votre adresse de messagerie ne sera pas publiée.


*