COMMENT CRÉE UN OUTIL DE HACHAGE EN 2 ÉTAPES ?

COMMENT CRÉE UN OUTIL DE HACHAGE EN 2 ÉTAPES ?

Hello everyone, aujourd’hui nous allons voir comment crée un outil de hachage, mais avant de commencer, c’est quoi ce hachage ?! Et bien, dans le domaine de la sécurité informatique le hachage est un processus qui permet d’augmenter la difficulté de mettre en évidence les informations confidentielles (comme les mots de passe ).

Le hachage est une technique irréversible qui grâce à un algorithme permet d’obtenir une chaîne de caractère différente de la chaîne d’origine, voici un shema qui simplifie le concept :

hach

 

C’est tous ce que vous devez savoir pour le moment, je vais détailler un peu plus les choses tout au long de ce tutoriel  pour aboutir à quelque chose comme ceci :

résultat du tuto

Prérequis : → la compréhension des fondamentales du langage Python.

    → un cerveau humain.

N.B : je vais procéder en utilisant  Python version 3.X, je vous recommande de faire de même car utiliser une autre version peut produire des résultats inattendues .

1- quelques définitions :

Après être moi-même confondue entre les différents termes : cryptage, hachage, encodage, Pour commencer il me semble nécessaire d’éclaircir ces notions avant de commencer  :

Encodage : Processus de modification d’une valeur (texte, fichier, …) pour un autre afin de la transmettre ou la stocker .

Hachage : « opération consistant à transformer un message de taille variable en un code de taille fixe en appliquant une fonction mathématique dans le but d’authentifier ou de stocker ce message ». Un exemple simple pour l’illustrer c’est le mot de passe du compte utilisateur sur les systèmes d’exploitation : quand l’utilisateur met un mot de passe, ce dernier va être transformé (hacher) en une chaîne de lettres et chiffres en passant par un algorithme de hachage puis stocké, cependant quand on essaie de s’authentifier, le mot de passer entré va être hacher selon le même algorithme et comparé avec la valeur stockée si elles s’accolent donc le mot de passe et accepter sinon il est rejeté, cela augmente considérablement la sécurité et réduit les chances de trouvé le mot de passe .

cryptage :  « Transformation d’un message en message codé incompréhensible pour qui ne connaît pas le code, de façon à en protéger la confidentialité ou l’authenticité. » . La particularité ici c’est que la chaîne cryptée peut être décryptée si on connait la clé de cryptage qui la rend a sa forme originale .

Souvent on a tendance a confondre entre hachage et cryptage et nous avons vu que la majeure différence entre ces deux c’est que la hachage est irréversible tandis que le cryptage et réversible .

2- programmation de la fonction de hachage :

Tout d’abord il va falloir préparer le noyau de notre programme : la fonction à qui on va envoyer la chaîne qui va être haché , et c’est elle qui va faire tout le travail . Vous êtes prêt!! ça sera facile ne vous inquiétez pas 😉.

Pour commencer ouvrez votre éditeur de texte préféré, enregistrez le projet sous le nom “hash_fonction.py ” et suivez avec moi, je met le code et en dessous j’explique :
>>>import hashlib
Le premier geste c’est d’appeler la bibliothéque “hashlib” c’est un module qui implémente une interface commune à de nombreuse méthodes de hachages sécurisés (MD5 ,sha1 ,sh256 ….), en revanche vous pouvez consulter la documentation sur le site officiel ou en tapant cette commande sous votre IDLE :

>>>help(hashlib)

Le deuxième pas consiste à mettre notre fonction en place pour cela on va créer une class et dedans je définis ma fonction ‘haching’ :

class hashit:
    def hashing(self,texte,hash_type):
        texte=texte.encode('utf-8')      # avant de hacher le texte il faut l'encoder d'abord avec de l'utf-8 (y'a d'autre type d'encodage aussi) ça sert a indiqué le type de caractère qu'on utilise. 
        hash_1=hashlib.new(hash_type)  # ici on choisit le type de hachage qu'on veut utiliser, vous pouvez consulter la liste de tous les types dans la documentation de hashlib.
        hash_1.update(texte)            # puis on effectue le type de hachage choisit sur notre texte.
        return hash_1.hexdigest()      # dernière étape c'est de retourner la valeur de notre texte après la transformation en  chiffres hexadécimaux.

Il faut reconnaître que notre fonction haching a besoin de deux valeurs avec lesquels elle va travailler le ‘texte‘ à hacher et le ‘hash_type‘ c’est-à-dire le type d’algorithme qui va effectuer la transformation de notre texte.
Pour le reste des lignes vous pouvez lire les commentaires à coté de chacune des lignes.

1- programmation de l’interface :

après avoir programmé notre fonction de hachage, nous devons créer l’interface qui reçois les données fournit par l’utilisateur (texte et hash_type ).

Pour cela ouvrez un nouveau fichier et enregistrez-le sous le nom de hash_tool.py (assurez-vous qu’il se trouve sur le même dossier que hash_fonction.py ).

Maintenant nous devons appeler notre class ‘ hashit ‘ et la bibliotheque ‘ hashlib ‘ , pour cela on procède comme suit :

>>>from hash_fonction import hashit
>>>import hashlib

Je vais mettre le programme dans un ‘ while True ‘ c’est-a-dire tans que c’est vrai (et c’est toujours vrai jusqu’à preuve du contraire 😁 ) vous devez exécuter ce qui vient après .

On aura les instructions suivantes :

while True:
    texte=str(input('mettez votre texte : '))       # on récupère ce que l'utilisateur a rentré comme texte a hacher et on le met dans une variable 'texte', il faut s'assurer que notre variable 'texte' est une chaîne de caractères(string). 
    hash_disponible = hashlib.algorithms_available          
    print(hash_disponible)                         # après avoir rentré le texte a hacher nous lui affichons tous les algorithmes de hachage que Python met a notre disposition.
    while texte=='':                               # ici on traite le cas ou l’utilisateur ne rentre pas de texte ('' veut dire vide) : tans qu'il n'y a pas de texte on lui redemande de saisir un texte.
        print('veuillez mettre un texte !! ')
        texte=str(input('mettez votre texte : '))

Ce qui a précédé concerne le texte à hacher passons au hash_type, c’est la même procédure :

hash_type=str(input('choisissez un hash-type : '))              # on demande le type de hachage choisit de la liste des hash_disponible.
    while hash_type=='' or hash_type not in hash_disponible:    # on traite les deux cas : tant que le type de hachage n'est pas indiqué OU un type non-mentionner dans la liste de hash_disponible on redemande de rentrer un hash_type valide. 
        print('veuillez choisir un hash_type!! : ')
        hash_type=str(input('choisissez un hash-type : '))

Et voici le dernier morceau de notre joli code :

    Hash=hashit()                               # on met notre class 'hashit' dans une variable pour faciliter son appel.
    result_hash=Hash.hashing(texte,hash_type)  # on passe le texte et le hash_type a notre fonction.
    print(result_hash)                          # et on affiche le hach.
    break                                       # on arrete le script, vous pouvez ne pas le mettre et le programme rentre dans un boucle infinie.

Ainsi vous aurez un code qui ressemble a cela :

from hash_fonction import hashit
import hashlib

while True:
    texte=str(input('mettez votre text : '))
    available=hashlib.algorithms_available
    print('\n',available,'\n')     # j'ai ajouté le \n pour faire un saut de ligne (pour améliorer la lisibilité)
    while texte=='':
        print('veuillez mettre un text !! ')
        texte=str(input('mettez votre text : '))
    hash_type=str(input('choisissez un hash-type : '))
    while hash_type=='' or hash_type not in available  :
        print('veuillez choisir un hash_type!! : ')
        hash_type=str(input('choisissez un hash-type : '))
    HH=hashit()
    result_hash=HH.hashing(texte,hash_type)
    print(result_hash)
    break

3- exécution du script :

Pour exécuter le script qu’on vient de créer ouvrez le cmd et déplacez vers le répertoire où se trouve notre hash_tool.py puis ecrivez la commande qui suit :

>>>python hash_tool.py

Cela va exécuter notre script hash_tool.py , si tout se passe bien, normalement vous aurez un résultat proche de celui la :

 

Après avoir entrer le texte et le type de hachage nous aurons notre hach  ( essayez différent texte et vous verrez que la taille du hach est fixe )  :

 

Pretty simple eh !?  Je pense que c’est tous ce que j’ai pour vous aujourd’hui, je ferais un tutoriel sur comment attaquer ce type de défense prochainement.

Hope you enjoyed today’s tutorial, en revanche si vous avez des questions n’hésitez pas de les poser en commentaires et je serais ravis de partager des connaissances avec vous .

see you, PEACE 😎.

 

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

onze + cinq =