1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
Imports System.Text
Public Class Crypto
Const TailleSalt As Integer = 16
Const TailleCle As Integer = 32
Const TailleIV As Integer = 16
Public Shared Function Chiffrer(ByRef messageclair As String, ByRef mdp As String) As String
Dim octectsClair() As Byte = Encoding.Unicode.GetBytes(messageclair)
Dim octectsMdp As New System.Security.Cryptography.Rfc2898DeriveBytes(mdp, TailleSalt)
Dim ms As New IO.MemoryStream
Dim algo As New System.Security.Cryptography.RijndaelManaged
algo.Key = octectsMdp.GetBytes(TailleCle)
algo.IV = octectsMdp.GetBytes(TailleIV)
Dim cs As New System.Security.Cryptography.CryptoStream(ms, algo.CreateEncryptor(), System.Security.Cryptography.CryptoStreamMode.Write)
cs.Write(octectsClair, 0, octectsClair.Length)
cs.Close()
Dim messagechiffre() As Byte = ms.ToArray()
Dim resultat(octectsMdp.Salt.Length + messagechiffre.Length - 1) As Byte
Array.ConstrainedCopy(octectsMdp.Salt, 0, resultat, 0, octectsMdp.Salt.Length)
Array.ConstrainedCopy(messagechiffre, 0, resultat, octectsMdp.Salt.Length, messagechiffre.Length)
Return Convert.ToBase64String(resultat)
End Function
Public Shared Function Dechiffrer(ByRef messagechiffre As String, ByRef mdp As String) As String
Dim message() As Byte = Convert.FromBase64String(messagechiffre)
Dim salt(TailleSalt - 1) As Byte
Dim octectschiffres(message.Length - TailleSalt - 1) As Byte
Array.ConstrainedCopy(message, 0, salt, 0, TailleSalt)
Array.ConstrainedCopy(message, TailleSalt, octectschiffres, 0, octectschiffres.Length)
Dim octectsMdp As New System.Security.Cryptography.Rfc2898DeriveBytes(mdp, TailleSalt)
octectsMdp.Salt = salt
Dim ms As New IO.MemoryStream
Dim algo As New System.Security.Cryptography.RijndaelManaged
algo.Key = octectsMdp.GetBytes(TailleCle)
algo.IV = octectsMdp.GetBytes(TailleIV)
Dim cs As New System.Security.Cryptography.CryptoStream(ms, algo.CreateDecryptor, System.Security.Cryptography.CryptoStreamMode.Write)
cs.Write(octectschiffres, 0, octectschiffres.Length)
cs.Close()
Return Encoding.Unicode.GetString(ms.ToArray)
End Function |
Partager