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 :
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
Et les images attestant de mon constat (à droite, le fichier chiffré puis déchiffré) :
Nom : UTF_8.png
Affichages : 311
Taille : 260,7 KoNom : UTF_32.png
Affichages : 351
Taille : 237,2 Ko