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 :

Crypter/décrypter un string à la lecture/écriture d'un fichier


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut Crypter/décrypter un string à la lecture/écriture d'un fichier
    Bonjour à tous,

    j'avais récupérer une classe en Vb6 pour crypter ou décrypter une chaine de caractère que je stockais sous forme de fichier texte, cela fonctionnait bien mais la classe ne fonctionne pas en .net.

    exemple simplifié:
    A la lecture du fichier:

    Dim montexte as string = ligne de lecture du fichier....
    montexte = Decript(montexte)

    A l'écriture du fichier:

    Dim montexte as string = "Bonjour Developpez"
    nomtexte = EnCript(nomtexte)
    Ecrire Ligne dans le fichier... = nomtexte

    En .net j'ai vu qu'il existait une classe System.Security.Cryptography. Mais pour le moment j'ai pas trouvé comment utiliser simplement le cryptage/décryptage sur une chaîne de caractère.

    Je continue à chercher mais si vous avez un petit coup de main à m'accorder, merci.

    Je stock mes données dans un fichier XML mais j'aimerais juste crypté les données contenu dans chaque clef. Je n'est pas besoin d'une grande sécurité mais juste que mes texte ne soit pas en clair pour monsieur tout le monde à l'ouverture du XML. Sachant que cela transitera en clair sur le port COM entre le PC et la supervision donc facilement récupérable pour le bidouilleur en herbe avec le 1er logiciel de capture de trame sur port COM (tel que :HHD Free Serial Port Monitor).

    Merci d'avance si je ne trouve pas rapidement.


    Edit:Je précise que ce n'est pas qu'un cryptage, (pour un mot de passe par exemple), mais il faut que je puisse faire les 2 (cryptage/décryptage) car j'ai des données à lire pour que mon logiciel puisse interroger les supervisions. De base il ne connait pas les données donc pas de comparaison possible.
    Je précise sa car j'ai trouvé des trucs sympa mais que pour les mots de passe et cela ne fait donc que comparer ce que l'utilisateur a saisi, mais pour moi ce n'est pas adapté.

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    dnas le namespace cryptography il y a une classe par type de cryptage, tu en prends un au choix (l'aes est assez connu par exemple)
    dans le cas de l'aes tu instancies donc un AesCryptoServiceProvider
    dessus tu as les fonctions CreateDecryptor et CreateEncryptor
    tu récupères donc soit un objet capable de crypter ou de décrypter
    sur ces objets il faut appeler TranformBlock par exemple
    nb : l'aes demande une clé, à l'instanciation peut etre, la clé tu mets les octets que tu veux
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut
    Bonjour, merci pour l'information. En recherchant les thermes je suis tombé sur sa:

    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
        Public Function AES_Encrypt(ByVal input As String, ByVal pass As String) As String
            Dim AES As New System.Security.Cryptography.RijndaelManaged
            Dim Hash_AES As New System.Security.Cryptography.MD5CryptoServiceProvider
            Dim encrypted As String = ""
            Try
                Dim hash(31) As Byte
                Dim temp As Byte() = Hash_AES.ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes(pass))
                Array.Copy(temp, 0, hash, 0, 16)
                Array.Copy(temp, 0, hash, 15, 16)
                AES.Key = hash
                AES.Mode = Security.Cryptography.CipherMode.ECB
                Dim DESEncrypter As System.Security.Cryptography.ICryptoTransform = AES.CreateEncryptor
                Dim Buffer As Byte() = System.Text.ASCIIEncoding.ASCII.GetBytes(input)
                encrypted = Convert.ToBase64String(DESEncrypter.TransformFinalBlock(Buffer, 0, Buffer.Length))
                Return encrypted
            Catch ex As Exception
                Return Nothing
            End Try
        End Function
     
        Public Function AES_Decrypt(ByVal input As String, ByVal pass As String) As String
            Dim AES As New System.Security.Cryptography.RijndaelManaged
            Dim Hash_AES As New System.Security.Cryptography.MD5CryptoServiceProvider
            Dim decrypted As String = ""
            Try
                Dim hash(31) As Byte
                Dim temp As Byte() = Hash_AES.ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes(pass))
                Array.Copy(temp, 0, hash, 0, 16)
                Array.Copy(temp, 0, hash, 15, 16)
                AES.Key = hash
                AES.Mode = Security.Cryptography.CipherMode.ECB
                Dim DESDecrypter As System.Security.Cryptography.ICryptoTransform = AES.CreateDecryptor
                Dim Buffer As Byte() = Convert.FromBase64String(input)
                decrypted = System.Text.ASCIIEncoding.ASCII.GetString(DESDecrypter.TransformFinalBlock(Buffer, 0, Buffer.Length))
                Return decrypted
            Catch ex As Exception
                Return Nothing
            End Try
        End Function
    C'est exactement ce que je souhaitais, merci

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

Discussions similaires

  1. lecture/écriture dans un fichier texte
    Par the watcher dans le forum Delphi
    Réponses: 23
    Dernier message: 15/05/2007, 10h57
  2. lecture/écriture dans un fichier
    Par benkunz dans le forum Langage
    Réponses: 3
    Dernier message: 10/04/2007, 11h35
  3. Réponses: 47
    Dernier message: 28/01/2007, 19h39
  4. lecture écriture dans un fichier
    Par poukill dans le forum C++
    Réponses: 9
    Dernier message: 23/05/2006, 11h02
  5. [PERL] Problème lecture/écriture dans un fichier
    Par LE NEINDRE dans le forum Langage
    Réponses: 4
    Dernier message: 17/08/2005, 13h15

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