Soyez le premier à donner votre avis sur cette source.
Snippet vu 12 537 fois - Téléchargée 32 fois
Imports System.Security.Cryptography Public Class AutoPassword 'le mot de passe est inférieur à 28 caractères car ce nombre 'dépend du cryptage et du hash utilisé, ici RC2 et SHA1 'Attention le nb ici est le nombre de caractère à enlever 'il doit donc être inférieure à 27 Function generer(ByVal nb As Integer) As String Dim crypto As New CryptoRC2 Dim hash As New CryptoSHA1 Dim str, strFind, strReplace As String crypto.genererKey() str = hash.HashText(crypto.textConverter.GetString(crypto.key)) ' Moi ces caractères me gène, libre à vous de les garder generer = Replace(str, "/", "é") generer = Replace(generer, "=", "ù") generer = Replace(generer, "+", "è") generer = generer.Remove(0, nb) End Function End Class ' ------------------------------------------------------------------------------------------- Imports System Imports System.IO Imports System.Text Imports System.Security.Cryptography Class CryptoRC2 'Voici le textConverter nécessaire à lencodage des différents formats: Public textConverter As New System.Text.ASCIIEncoding 'On crée ensuite une instance dun des algorithmes du Framework .Net Public rc2CSP As New Security.Cryptography.RC2CryptoServiceProvider 'On crée les variables déchange de valeurs cryptées non cryptées Public fromEncrypt() As Byte Public encrypted() As Byte Public toEncrypt() As Byte 'On crée les variables de stockage des clefs de cryptage. Public key() As Byte Public IV() As Byte 'on génère les clefs de l'algorythme rc2 Public Function genererKey() rc2CSP.GenerateKey() key = rc2CSP.Key End Function Public Function genererIV() rc2CSP.GenerateIV() IV = rc2CSP.IV End Function Public Function crypter(ByVal message As String) 'on génère un encrypteur avec les clefs que lon a généré : Dim encryptor As Security.Cryptography.ICryptoTransform = rc2CSP.CreateEncryptor(key, IV) 'on converti le texte en byte() : attention les parenthèses sont importantes, car lencrypteur ne travaille quavec des flux de données et rien dautre : toEncrypt = textConverter.GetBytes(message) 'on crypte les données 'On crée le flux de données qui recevra le message crypté : Dim msEncrypt As New System.IO.MemoryStream 'On crée le flux de travail de lencrypteur : Dim csEncrypt As New Security.Cryptography.CryptoStream(msEncrypt, encryptor, Security.Cryptography.CryptoStreamMode.Write) 'Après encryptation on transfert les données cryptées dans le flux 'Puis dans la variable dexportation csEncrypt.Write(toEncrypt, 0, toEncrypt.Length) csEncrypt.FlushFinalBlock() encrypted = msEncrypt.ToArray() End Function Public Function decrypter() 'on crée un décrypteur qui utilise les mêmes clefs Dim decryptor As Security.Cryptography.ICryptoTransform = rc2CSP.CreateDecryptor(key, IV) 'on décrypte les données 'notez que encrypted est chargée demblée dans le flux Dim msDecrypt As New System.IO.MemoryStream(encrypted) Dim csDecrypt As New Security.Cryptography.CryptoStream(msDecrypt, decryptor, Security.Cryptography.CryptoStreamMode.Read) fromEncrypt = New Byte(encrypted.Length) {} 'Enfin on transfert le résultat dans fromEncrypt csDecrypt.Read(fromEncrypt, 0, fromEncrypt.Length) End Function Public Function traduire() As String 'on reconvertit les données en texte. traduire = textConverter.GetString(fromEncrypt) End Function End Class 'CryptoRC2 ' ------------------------------------------------------------------------------------------ Imports System.Security.Cryptography Public Class CryptoSHA1 Public Function HashText(ByVal TextToHash As String) As String Dim SHA1 As SHA1CryptoServiceProvider Dim bytValue() As Byte Dim bytHash() As Byte ' Create New Crypto Service Provider Object SHA1 = New SHA1CryptoServiceProvider ' Convert the original string to array of Bytes bytValue = System.Text.Encoding.UTF8.GetBytes(TextToHash) ' Compute the Hash, returns an array of Bytes bytHash = SHA1.ComputeHash(bytValue) SHA1.Clear() ' Return a base 64 encoded string of the Hash value HashText = Convert.ToBase64String(bytHash) End Function End Class ' -------------------------------------------------------------------------------------------- ' Pour utiliser au final dans votre *.aspx.vb, via un bouton et un textbox par exemple : Imports System Imports System.IO Imports System.Text Imports System.Security.Cryptography Public Class testGenerer Inherits System.Web.UI.Page Protected WithEvents TextBox As System.Web.UI.WebControls.TextBox Protected WithEvents bouton As System.Web.UI.HtmlControls.HtmlInputButton Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Placez ici le code utilisateur pour initialiser la page End Sub Private Sub bouton_ServerClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bouton.ServerClick Dim pass As New AutoPassword TextBox.Text = pass.generer(20) End Sub End Class ' ------------------------------------------------------------------------------------------- ' Partie HTML : <%@ Page Language="vb" AutoEventWireup="false" Codebehind="testGenerer.aspx.vb" Inherits="archimed.testGenerer"%> <HTML> <HEAD> <title>testCrypto</title> </HEAD> <body> <form id="Form1" method="post" runat="server"> <asp:TextBox id="TextBox" runat="server" Width="20%"> </asp:TextBox> <INPUT id="bouton" type="submit" value="encode" name="bouton" runat="server"> </form> </body> </HTML>
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.