Protection par la methode hash sha-1

Description

Cette source permet de mieux comprendre l'utilisation de SHA-1, basé sur la methode à J.M Barrilloud, et de l'integrer dans une source. Malheureusement, j'utilise SharpDevelop, Je placerais donc le code, pour que vous puissiez le lire... car les fichiers qui seront dans le zip nécéssitent SharpDevelop pour fonctionner !

Source / Exemple :


'Première source : Obtenir le Hash D'un mot
'Nécéssite la création de 2 textBox et d'un bouton 

'On commence par créer nos imports
Imports System
Imports System.Windows.Forms
Imports System.Security.Cryptography 'C'est ceci qui nous permet d'utiliser la methode de Hachage

'On place nos textBox (l'un se nomme : Textnoncrypte et l'autre :textcrypte) et notre bouton(Encrypt_) ici

'Definition de l'evenement bouton

Private Sub Encrypt_Click(sender As System.Object, e As System.EventArgs)
   Dim Hachage As Byte()
   Dim Code As New system.Text.UnicodeEncoding
   Dim mdp() As Byte = Code.GetBytes(Textnoncrypte.Text)
   Dim sha1Hachage As New Security.Cryptography.SHA1CryptoServiceProvider
   Dim resultat As String
   Hachage = sha1Hachage.ComputeHash(mdp)
   resultat = Convert.ToBase64String(Hachage)
   textcrypte.Text = resultat
			
End Sub

'Voilà, ce premier code permet de traduire un texte en un Hash SHA-1 qui va alors pouvoir être utilisé dans notre code.

#########################################################################################################################################

'Deuxième Source : l'integrer dans notre code.
'Imaginons que nous voulons integrer dans notre page d'acceuil un accès restreint, L'utilisateur rentre son mot de Passe, qui est encrypté en SHA-1, qui 
'est alors comparé au code SHA-1 présent dans la source (du coup, c'est plus complexe qu'un vulgaire mot de passe, mais il est toujours possible de le 
'retrouver...

'Necessite la création de 1 textbox et d'un Bouton

'On réalise les même imports :
Imports System
Imports System.Windows.Forms
Imports System.Security.Cryptography

'On place ici notre textBox (password) et notre bouton : (Entrer_)

'On réalise l'évènement bouton (il ne change pas trop de la methode vue plus haut)
Private Sub Entrer_Click(sender As System.Object, e As System.EventArgs)
   Dim Hachage As Byte()
   Dim Code As New system.Text.UnicodeEncoding
   Dim mdp() As Byte = Code.GetBytes(password.Text)
   Dim sha1Hachage As New Security.Cryptography.SHA1CryptoServiceProvider
   Dim resultat As String
   Hachage = sha1Hachage.ComputeHash(mdp)
   resultat = Convert.ToBase64String(Hachage)
   
   'jusque ici, ça ne change pas trop 
   'On va alors comparé le Hash obtenu du mot de passe entré avec celui defini dans la source
   'Dans l'exemple, le mot de passe est : Ali Baba et les 40 Voleurs (attention aux majuscules/minuscules/espaces !!!), le Hash corrpondant est :
   'efV4uuTy540gBd+LcT0j4dY31DE=

   'On va alors comparer les deux valeurs methode utilisée pour comparer : Equals
   if resultat.Equals("efV4uuTy540gBd+LcT0j4dY31DE=") then
       MessageBox.Show("Bien joué !")
   Else
       MessageBox.Show("Raté !")
   End if

   End Sub

'Voilà pour cette première méthode simple, vous pouvez encore largement l'améliorer en y inserant un autre mot de passe, en y inserant un compteur...

#######################################################################################################################################

'Je vais maintenant vous donner des idées pour compliquer un peu votre protection
'En effet, l'une des première chose à faire ce serait de ne pas présenter la valeur à comparer dans notre programme
'De trouver des mots de passe comprenant lettres minuscules majuscules chiffres et sans sens particulier...

'Le but étant en fait de demander à l'utilisateur deux password
'Ensuite, il y a plusieurs façons :
'Tout d'abord, on peut ajouter les deux Hash obtenus grâce à la méthode AppendText dans un troisième textBox caché, et par une suite de calculs, que cette nouvelle
'égalité soit egale à celle d'un 4em textBox caché
'En fait je pense que tous résulte de 2 suites d'opérations crées à partir des 2 password. Et à la fin, si les deux résultats de ces suites sont égales, c'est ok

'Voilà un peu près ou j'en suis arrivé

Conclusion :


Je suis débutant, donc c'est assez simpliste mais j'essaye de le compliquer avec les methodes présentées ci-dessus, bien sûr j'attend aussi énormement de vous, pour savoir
si vous avez aussi une methode pour compliquer la chose etc...

P.S : Je rapelle que j'utilise SharpDevelop et donc non compatible avec les fichiers projets générés pas VB, VB6 msdn etc..

Merci à vous !

La source donnée est en fait le 1er exemple (mais en Sharp... lol)

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.