
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 😉
Poster un Commentaire