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 :

Algorithmes de Hash


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 19
    Par défaut Algorithmes de Hash
    Bonjour,

    Je souhaiterai réaliser un logiciel pour hacher des chaînes de caractères en VB.NET. Quelque chose de comparable à cela : Générateur de Hash en ligne mais en WindowsForm.
    Or ne sont implémentés que les algorithmes suivants en Visual Basic 2008 :
    • MD5
    • SHA1
    • SHA256
    • SHA384
    • SHA512
    • RIPEMD160


    Ce qui n'en fait que 6 sur les 38 proposés par ce service (les principales lacunes sont Haval et Tiger). Cela fait longtemps que je cherche sur de nombreux sites, sauriez-vous s'il vous plaît où pourrais-je trouver les codes pour implémenter un maximum d'algorithmes de hash à mon logiciel ? Si vous avez des sources dans un autre langage je suis tout de même intéressé !

    Merci beaucoup de votre attention !
    Léo Nicoletti, lycéen en filière S.

  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 : 43
    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
    Par défaut
    Regarde du côté des librairies de cryptographie BouncyCastle et Mentalis.org, ça contient sûrement des algos de hash...

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 19
    Par défaut
    Merci Tomlev pour votre réponse.

    J'ai cherché du côté de ces librairies et j'ai trouvé la DLL Org.Mentalis.SecurityService possèdant les algorithmes RC4, MD4 et HMAC en plus mais j'ai du mal à les utiliser.

    Voici le code que j'ai trouvé sur la MSDN pour utiliser les algorithmes implémentés dans le framework :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim md5Hasher As MD5 = MD5.Create()
    Dim data As Byte() = md5Hasher.ComputeHash(Encoding.Default.GetBytes(InputBox("texte")))
    Dim sBuilder As New StringBuilder()
     
    Dim i As Integer
    For i = 0 To data.Length - 1
      sBuilder.Append(data(i).ToString("x2"))
    Next i
     
    MsgBox(sBuilder.ToString())
    Ce code marche pour la DLL avec par exemple l'algorithme MD4 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim md4Hasher As Cryptography.md4CryptoServiceProvider = Cryptography.MD4CryptoServiceProvider.Create
    Dim data As Byte() = md4Hasher.ComputeHash(Encoding.Default.GetBytes(InputBox("texte")))
    Dim sBuilder As New StringBuilder()
     
    Dim i As Integer
    For i = 0 To data.Length - 1
      sBuilder.Append(data(i).ToString("x2"))
    Next i
     
    MsgBox(sBuilder.ToString())
    Mais quand j'essaye avec l'algorithme RC4 (par exemple), là il me signale que "ComputeHash" n'est pas un membre de mon objet.

    • Quelle est la différence entre ces deux applications (MD4 et RC4) ?
    • J'en profite pour vous demander quelle est la différence entre par exemple : MD4 et MD4CryptoServiceProvider ?


    Merci beaucoup une fois de plus !

  4. #4
    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 : 43
    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
    Par défaut
    Citation Envoyé par LéoNicoletti Voir le message
    Quelle est la différence entre ces deux applications (MD4 et RC4) ?
    RC4 n'est pas un algorithme de hachage mais de cryptage (si tu regardes dans les sources, tu verras que la classe RC4 hérite de SymmetricAlgorithm et non de HashAlgorithm)

    Citation Envoyé par LéoNicoletti Voir le message
    J'en profite pour vous demander quelle est la différence entre par exemple : MD4 et MD4CryptoServiceProvider ?
    MD4 est une classe abstraite. MD4CryptoServiceProvider est une implémentation de MD4. L'intérêt de ceci est qu'on peut facilement fournir d'autres implémentations de MD4, qui seront utilisées de la même manière. Regarde les classes de crypto du framework, elles utilisent le même schema (MD5 - MD5CryptoServiceProvider, etc)

  5. #5
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 19
    Par défaut
    Effectivement, désolé je me suis trompé quant au RC4, mais bon ma syntaxe de marche pas non plus pour le HMAC qui est bien une fonction de hachage.

    Quelle serait alors s'il te plaît la syntaxe pour faire marcher toutes ces fonctions ((dé)chiffrement et hachage) qu'elles soient implantées dans le framework ou référencées ?

    Merci beaucoup pour ton aide qui m'est très précieuse pour comprendre l'utilisation de fonctions référencées.

  6. #6
    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 : 43
    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
    Par défaut
    Citation Envoyé par LéoNicoletti Voir le message
    Effectivement, désolé je me suis trompé quant au RC4, mais bon ma syntaxe de marche pas non plus pour le HMAC qui est bien une fonction de hachage.

    Quelle serait alors s'il te plaît la syntaxe pour faire marcher toutes ces fonctions ((dé)chiffrement et hachage) qu'elles soient implantées dans le framework ou référencées ?

    Merci beaucoup pour ton aide qui m'est très précieuse pour comprendre l'utilisation de fonctions référencées.
    HMAC est un cas particulier, c'est un KeyedHashAlgorithm, c'est à dire un algorithme de hachage utilisant une clé. Il faut passer un HashAlgorithm en paramètre du constructeur pour pouvoir le créer.

    Je te conseille de consulter la doc du framework pour bien comprendre comment s'organisent les différentes classes de cryptographie. De plus, si tu veux que ton programme soit générique (i.e. que tu n'aies pas à réécrire un code presque identique pour chaque algorithme), il faut bien comprendre le mécanisme de l'héritage et du polymorphisme. En .NET, toutes les classes qui implémentent un algorithme de hachage héritent de HashAlgorithm. Elles ont donc toutes une méthode ComputeHash avec la même signature. Donc, si je reprends tes exemples de code plus haut, tu pourrais les factoriser de la façon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Public Function ComputeHash(ByVal text As String, ByVal algorithm As HashAlgorithm) As String
     
        Dim bytes As Byte() = Encoding.Default.GetBytes(text)
        Dim hash As Byte() = algorithm.ComputeHash(bytes)
     
        Dim sBuilder As New StringBuilder() 
        Dim i As Integer
        For i = 0 To data.Length - 1
          sBuilder.Append(data(i).ToString("x2"))
        Next i
     
        Return sBuilder.ToString()
     
    End Function
    Une fois que tu as cette fonction, tu peux lui passer en paramètre n'importe quel algoritme de hachage que tu auras instancié.

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

Discussions similaires

  1. [ALL Versions] Recherche algorithme de hash des passwords
    Par jeeps64 dans le forum Administration
    Réponses: 7
    Dernier message: 10/04/2013, 12h54
  2. algorithme de hashing
    Par edmondzos dans le forum Mathématiques
    Réponses: 1
    Dernier message: 14/07/2010, 10h15
  3. Algorithme de randomisation ... ( Hasard ...? )
    Par Anonymous dans le forum Assembleur
    Réponses: 8
    Dernier message: 06/09/2002, 14h25
  4. Recherche de documentation complète en algorithmes
    Par Anonymous dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 29/03/2002, 12h09
  5. Algorithme génétique
    Par Stephane.P_(dis Postef) dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 15/03/2002, 17h14

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