Bonjour messieurs dames, Je vous sollicite aujourd'hui afin de vous faire part d'un problème lors du chiffrement/déchiffrement par le chiffrement symétrique AES 196 bits de fichiers à caractères exotiques (ici, ce sont des fichiers images) dont l'encodage utilisé UTF8 ne permet de rendre compte de l'ensemble des caractères à priori. Cependant, UTF-8 est connu pour coder tous ces caractères, je me retrouve donc dans une impasse quant à la source du problème. Je m'interroge sur la fiabilité du Convert.FromBase64String et son homologue. Voici mon code de chiffrement/déchiffrement :
Et les images attestant de mon constat (à droite, le fichier chiffré puis déchiffré) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Friend Function Encrypt(ByVal strCrypt As String, ByVal key As String, ByVal IV As String) As String Dim myAESProvide As New AesCryptoServiceProvider() myAESProvide.Mode = CipherMode.CFB myAESProvide.Key = Encoding.UTF8.GetBytes(key) myAESProvide.IV = Encoding.UTF8.GetBytes(IV) Dim bteCrypt() As Byte = Encoding.UTF8.GetBytes(strCrypt) Dim bteResult() As Byte Try Dim b = myAESProvide.CreateEncryptor() bteResult = b.TransformFinalBlock(bteCrypt, 0, bteCrypt.Length) Return Convert.ToBase64String(bteResult) Catch ex As CryptographicException Return False End Try End Function Friend Function Decrypt(ByVal strResult As String, ByVal key As String, ByVal IV As String) As String Dim myAESProvide As New AesCryptoServiceProvider() myAESProvide.Mode = CipherMode.CFB myAESProvide.Key = Encoding.UTF8.GetBytes(key) myAESProvide.IV = Encoding.UTF8.GetBytes(IV) Dim bteDecrypt() As Byte Try Dim crypted() As Byte = Convert.FromBase64String(strResult) Dim b = myAESProvide.CreateDecryptor() bteDecrypt = b.TransformFinalBlock(crypted, 0, crypted.Length) Return Encoding.UTF8.GetString(bteDecrypt) Catch ex As CryptographicException Return False End Try End Function
![]()
Partager