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 :

cryptage AES avec fichier .hex [Débutant]


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 27
    Points : 20
    Points
    20
    Par défaut cryptage AES avec fichier .hex
    bonjour à tous,

    je ne sais pas si je suis dans la bonne section, je m'excuse d'avance auprés des modérateurs si mon post n'a pas sa place ici

    j'utilise visual basic 2010 pour mon projet

    j'ai besoin de lire un fichier .hex et de crypter uniquement la partie data ( le format du fichier .hex est expliqué ici : http://www.datelec.fr/uniprog/format%20intel.htm)

    j'arrive actuellement à lire mon fichier .hex et a extraire les data mais sous forme de string

    je voudrai que ce string soit crypté en AES mais sous format hexadécimal

    voila un exemple :
    :10 0000 00 00112233445566778899AABBCCDDEEFF F8

    donc les data sont 00112233445566778899aabbccddeeff

    je veux utiliser la clef 256bit : 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f

    et au final, je dois obtenir 8ea2b7ca516745bfeafc49904b496089

    merci de votre aide

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Regarde du côté de la classe System.Security.Cryptography.Aes

    Par contre il ne faut pas seulement un clé mais aussi un IV (initialization vector et non intra-veineuse )

    D'autre part, la classe Aes manipule des tableaux d'octets, et non des chaines hexadécimales. Pour convertir tu peux utiliser cette méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Function HexToByteArray(hex As String) As Byte()
    	Dim bytes As Byte() = New Byte(hex.Length \ 2 - 1) {}
    	For i As Integer = 0 To bytes.Length - 1
    		bytes(i) = Convert.ToByte(hex.Substring(2 * i, 2), 16)
    	Next
    	Return bytes
    End Function

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Au fait, il y a un tuto ici sur le cryptage AES. C'est en C#, mais ça devrait pas être très dur à convertir en VB (il y a un convertisseur ici si tu n'y arrives pas)

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 27
    Points : 20
    Points
    20
    Par défaut
    bonjour tomlev,

    j'avance petit à petit grâce à votre prècise aide
    je débute vraiment dans la programmation windows, avant je programmais un peu en C sous DOS ... ça remonte
    je suis plus spécialisé microprocesseur et asm
    d'ailleurs le déchiffrement sera fait par le processeur de la carte

    j'avais déja vu ce tuto pour l'algo en C# mais n'y comprenant rien, je l'avais pas garder

    bref,
    j'ai donc utilisé le convertisseur C# -> VB (d'ailleurs je garde le lien précieusement ) c'est magique

    j'arrive bien a l'aide des TextBox à envoyer mon "hexa"
    mais je coince sur quoi mettre dans le IV
    car tout les exemples de cryptage en AES que je trouve, ne parle que de PlainText, de Key et de CypherText

    une recherche avec google ne m'a pas vraiment aidé
    pour le tout premier bloc, un bloc de contenu aléatoire est généré et utilisé, appelé « vecteur d'initialisation » (initialization vector, ou IV).
    heu... je mets un bloc aléatoire (000...000)

    le résultat est en 32 octets

    voila le code généré :
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    Imports System.Text
    Imports System.Security.Cryptography
    Imports System.IO
     
    Public Class Form1
        Private Function HexToByteArray(ByVal hex As String) As Byte()
            Dim bytes As Byte() = New Byte(hex.Length \ 2 - 1) {}
            For i As Integer = 0 To bytes.Length - 1
                bytes(i) = Convert.ToByte(hex.Substring(2 * i, 2), 16)
            Next
            Return bytes
        End Function
     
        ''' 
        ''' Chiffre une chaîne de caractère
        ''' 
        ''' Texte clair à chiffrer
        ''' Clé de chiffrement
        ''' Vecteur d'initialisation
        ''' Retourne le texte chiffré
        Private Function EncryptString(ByVal clearText As String, ByVal strKey As String, ByVal strIv As String) As String
     
            ' Place le texte à chiffrer dans un tableau d'octets
            Dim plainText As Byte() = HexToByteArray(clearText) '= Encoding.UTF8.GetBytes(clearText)
     
            ' Place la clé de chiffrement dans un tableau d'octets
            Dim key As Byte() = HexToByteArray(strKey) '= Encoding.UTF8.GetBytes(strKey)
     
     
            ' Place le vecteur d'initialisation dans un tableau d'octets
            Dim iv As Byte() = HexToByteArray(strIv) '= Encoding.UTF8.GetBytes(strIv)
     
     
            Dim rijndael As New RijndaelManaged()
     
            ' Définit le mode utilisé
            rijndael.Mode = CipherMode.CBC
     
            ' Crée le chiffreur AES - Rijndael
            Dim aesEncryptor As ICryptoTransform = rijndael.CreateEncryptor(key, iv)
     
            Dim ms As New MemoryStream()
     
            ' Ecris les données chiffrées dans le MemoryStream
            Dim cs As New CryptoStream(ms, aesEncryptor, CryptoStreamMode.Write)
            cs.Write(plainText, 0, plainText.Length)
            cs.FlushFinalBlock()
     
     
            ' Place les données chiffrées dans un tableau d'octet
            Dim CipherBytes As Byte() = ms.ToArray()
     
     
            ms.Close()
            cs.Close()
     
            ' Place les données chiffrées dans une chaine encodée en Base64
            Return Convert.ToBase64String(CipherBytes)
     
     
        End Function
     
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            TextBox4.Text = EncryptString(TextBox1.Text, TextBox2.Text, TextBox3.Text)
        End Sub
    End Class
    dans les images , le résultat doit être 69c4e0d86a7b0430d8cdb78070b4c55a en hexa
    soit un tableau en décimal [ 105, 196, 224, 216, 106, 123, 4, 48, 216, 205, 183, 128, 112, 180, 197, 90 ]

    c'est bon j'ai plus qu'à filtrer mon tableau final les 16 premières valeurs

    encore mille merci tomlev
    cette exemple pourra sera servir à bien d'autre je pense
    Images attachées Images attachées   

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    N'oublie pas le bouton si c'est bon

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 27
    Points : 20
    Points
    20
    Par défaut
    oui c'est résolu

    un petit redim est c'est parfait

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

Discussions similaires

  1. cryptage d'un fichier avec un mot donné
    Par benk_sou dans le forum C
    Réponses: 2
    Dernier message: 10/11/2011, 11h04
  2. Information pour Cryptage AES avec JSP
    Par mattrixx dans le forum Servlets/JSP
    Réponses: 12
    Dernier message: 02/11/2011, 10h10
  3. Réponses: 2
    Dernier message: 30/09/2009, 15h53
  4. Bibliothèque zip avec cryptage AES
    Par guilig dans le forum Bibliothèques
    Réponses: 5
    Dernier message: 01/02/2007, 18h30
  5. Réponses: 4
    Dernier message: 25/08/2003, 09h02

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