none
[résolu]Crypteur MD5 RRS feed

  • Question

  • Bonjour, je souhaiterai creer un crypteur md5(j'ai déja du code mais MS VB me signale des erreurs : 

    Public Class Form1
    
        Private Function GenerateHash(ByVal strToHash As String) As String
            Dim md5Obj As New Security.Cryptography.MD5CryptoServicePr­ovider 
            Dim bytesToHash() As Byte = System.Text.Encoding.ASCII.GetBytes(strT­oHash) 
            bytesToHash = md5obj.ComputeHash(bytesToHash)
            Dim strResult As String = ""
            For Each b As Byte In bytesToHash
                strResult += b.ToString("x2")
            Next
            Return strResult
        End Function
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
        End Sub
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            TextBox2.Text = GenerateHash(TextBox1.Text)
        End Sub
    
    
    End Class

    La textbox1 recueille le texte a encoder et la textbox2 le code encodé en md5.

    Pourriez vous me dire quels sont les problèmes et comment les corriger ?

    Cordialement.

    Bonne journée.


    Theodore Morgado


    samedi 7 septembre 2013 12:43

Réponses

Toutes les réponses

  • Bonjour,

    Oui, c'est très simple : il faut lire ce qui est écrit dans la fenêtre des erreurs, et/ou regarder le code qui est souligné avec des vaguelettes rouges. Et corriger les erreurs qui deviennent alors évidentes.

    Une fois que c'est fait, l'application fonctionne très bien.

    Par exemple, si on te dit que md5obj n'est pas déclaré alors que tu as déclaré un md5Obj, tu copies le nom de la déclaration et tu le colles là où il est signalé erronné : à ce moment tu vois le o minuscule devenir un O majuscule, et les vaguelettes rouges disparaissent.

    Pareil pour le reste.


    • Modifié Gloops samedi 7 septembre 2013 13:48
    samedi 7 septembre 2013 13:47

  • Theodore Morgado

    samedi 7 septembre 2013 14:01
  • Ah non pardon, les erreurs sont signalées par des vaguelettes bleues, et non rouges.

    samedi 7 septembre 2013 14:15
  • Bonjour Theodore Morgado,

    Amusant les traits d'union invisibles :

            Dim md5Obj As New Security.Cryptography.MD5CryptoServicePr­-ovider
            Dim bytesToHash() As Byte = System.Text.Encoding.ASCII.GetBytes(strT­-oHash)

    0xAD = Soft Hyphen

    Sûrement la faute à pas chance ;-)


    Cordialement, Jacques

    samedi 7 septembre 2013 14:18
  • C'est bon, j'ai réussi, MERCI !

    Theodore Morgado

    samedi 7 septembre 2013 14:19
  • Tu dois trouver quelque part un onglet "Liste d'erreurs", il est souvent en bas.

    Si il n'est pas visible, tu peux l'appeler à partir du menu Affichage.

    En double-cliquant, dans cette fenêtre, sur une erreur, ça sélectionne automatiquement le code concerné. Quand il y a quelques dizaines d'erreurs sur une application avec des modules de quelques centaines de lignes, ça peut être précieux.

    samedi 7 septembre 2013 14:37
  • Mais comment fait-on pour décrypter ?

    Theodore Morgado

    dimanche 8 septembre 2013 11:52
  • Mais comment fait-on pour décrypter ?

    Pour parler franchement, cette question n'est pas du tout du même niveau que la précédente :)

    En fait, la somme MD5 est une somme de "contrôle", c'est-à-dire qu'en établissant la somme de contrôle d'une autre chaîne par le même algorithme on saura dire avec un pourcentage raisonnable de certitude si c'est la même ou pas, en revanche je n'ai pas connaissance qu'on puisse obtenir la chaîne de départ à partir de la somme MD5. ça sert d'une part à s'assurer qu'il n'y a pas eu de problème de transmission lors d'un téléchargement de fichier, d'autre part à vérifier un mot de passe.

    Pour réaliser un cryptage qui pourra être décrypté à destination, il faut utiliser d'autres algorithmes. Il ne servirait pas à grand-chose que je te fasse un copier-coller des fonctions que j'ai utilisées dans ce but, aussi je te suggère de jeter un coup d'œil là :

    DataProtection.EncryptString, méthode

    A noter que mettre ça en œuvre c'est bien, après il y a un certain nombre de questions de sécurité qui doivent être traitées aussi pour que ça serve à quelque chose.

    Juste après avoir appris comment situer où sont les erreurs commises sous Visual Studio, ne serais-tu pas tenté de commencer par un sujet plus facile ?

    dimanche 8 septembre 2013 13:12
  • Les algos ne sont pas déjà dans le code du logiciel ?

    Theodore Morgado

    dimanche 8 septembre 2013 13:22
  • Oui, en fait les fonctions à écrire ne sont pas très difficiles à comprendre. C'est surtout les enjeux qui sont un peu plus difficiles à assumer.

    Quand tu écris un éditeur de texte ou une interface visuelle, si tu commets une erreur tu t'en rends forcément compte et en faisant le nombre de boucles de développement voulu tu finis par les corriger, et ton logiciel fonctionne.

    Quand il s'agit de sécurité, si tu commets une bévue tu n'en as pas forcément conscience, simplement il peut s'avérer un jour que quelqu'un réussit à se procurer ta clef de cryptage car tu l'as stockée à un endroit où elle était trop facile à trouver. Et quand je dis "il s'avère que", l'expression n'est pas forcément appropriée, car aussi bien tu ne le sais pas. Simplement, les clients s'en vont l'un après l'autre car ils ont été contactés par un concurrent, par exemple ...

    C'est pour ça que j'encouragerais bien à avoir une certaine expérience du développement avant de s'attaquer à ça.

    dimanche 8 septembre 2013 13:33
  • Oui, mais mon programme est surtout un crypteur/décrypteur.

    Theodore Morgado

    dimanche 8 septembre 2013 13:39
  • Oui, c'est pour ça que je disais ça, en partant du principe que tu voulais qu'une seule personne soit capable de décrypter ce que tu as crypté.

    Mais c'est vrai que les utilisations sont tellement diverses qu'après tout il se peut bien que dans ton cas ce ne soit pas très gênant.

    dimanche 8 septembre 2013 13:48