IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Problème d'encodage pertubateur lors du chiffrement/déchiffrement en AES de fichiers images.


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2015
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2015
    Messages : 35
    Par défaut Problème d'encodage pertubateur lors du chiffrement/déchiffrement en AES de fichiers images.
    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 : 317
Taille : 260,7 KoNom : UTF_32.png
Affichages : 356
Taille : 237,2 Ko

  2. #2
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2015
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2015
    Messages : 128
    Par défaut
    tu doit pas encrypter en utf8 ou autre c'est du binaire qui doit étre encrypté, si tu encrypte en utf8 il contient surement pas tout les Bits donc ceux qu'il connait il les met, ce qu'il connait pas il transforme en caractére inconnu

    par ex : si tu prend une image tu l'ouvre avec un éditeur de texte et tu sauvegarde l'image est morte

    j'ai pas tout lu mais juste en voyant UTF8 et image je t'es écrit sa

    u doit crypter en bynaire la méthode que t'utilise est que pour du texte

  3. #3
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2015
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2015
    Messages : 35
    Par défaut
    Hay ! Merci beaucoup ! Ça fonctionne nickel. Heureusement que des gens s'y connaissent en encodage car j'y comprends rien du tout. Merci, sujet résolu !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Friend Function Encrypt(ByVal bteCrypt() As Byte, ByVal key As String, ByVal IV As String) As Byte()         Dim myAESProvide As New AesCryptoServiceProvider()         myAESProvide.Mode = CipherMode.CFB         myAESProvide.Key = Encoding.UTF8.GetBytes(key)         myAESProvide.IV = Encoding.UTF8.GetBytes(IV)         Dim bteResult() As Byte         Try             Dim b = myAESProvide.CreateEncryptor()             bteResult = b.TransformFinalBlock(bteCrypt, 0, bteCrypt.Length)             Return bteResult         Catch ex As CryptographicException             Return False         End Try     End Function     Friend Function Decrypt(ByVal crypted() As Byte, ByVal key As String, ByVal IV As String) As Byte()         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 b = myAESProvide.CreateDecryptor()             bteDecrypt = b.TransformFinalBlock(crypted, 0, crypted.Length)             Return bteDecrypt         Catch ex As CryptographicException             Return False         End Try     End Function

  4. #4
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2015
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2015
    Messages : 128
    Par défaut
    pour une foit j'ai servit de ma vie :p haha

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème d'encodage lors de la création d'une base
    Par thor76160 dans le forum PostgreSQL
    Réponses: 11
    Dernier message: 29/01/2010, 20h47
  2. [JAVAMAIL] Problèmes d'encodage lors de la lecture de mail
    Par lookout dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 17/03/2009, 17h40
  3. [XML] Problème d'encodage lors de la lecture xml
    Par adilou1981 dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 12/09/2008, 15h07
  4. Problème d'encodage lors d'une recherche
    Par cysedbs dans le forum Langage
    Réponses: 3
    Dernier message: 05/12/2007, 20h53
  5. Problèmes d'encodage lors de l'envoi d'un mail
    Par NeqO55 dans le forum Linux
    Réponses: 1
    Dernier message: 31/08/2007, 18h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo