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 :

[debutant] le cryptage


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de warubi
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 399
    Par défaut [debutant] le cryptage
    Bonjour a tous ! J'ai creer une class permettant de crypter le mot de passe qui permet de proteger le logiciel que j'ai concu en vb.Net. J'aimerais avoir votre avis sur cette class
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    Imports System.Text
    Public Class Crypto
        Const TailleSalt As Integer = 16
        Const TailleCle As Integer = 32
        Const TailleIV As Integer = 16
        Public Shared Function Chiffrer(ByRef messageclair As String, ByRef mdp As String) As String
            Dim octectsClair() As Byte = Encoding.Unicode.GetBytes(messageclair)
            Dim octectsMdp As New System.Security.Cryptography.Rfc2898DeriveBytes(mdp, TailleSalt)
            Dim ms As New IO.MemoryStream
            Dim algo As New System.Security.Cryptography.RijndaelManaged
            algo.Key = octectsMdp.GetBytes(TailleCle)
            algo.IV = octectsMdp.GetBytes(TailleIV)
            Dim cs As New System.Security.Cryptography.CryptoStream(ms, algo.CreateEncryptor(), System.Security.Cryptography.CryptoStreamMode.Write)
            cs.Write(octectsClair, 0, octectsClair.Length)
            cs.Close()
            Dim messagechiffre() As Byte = ms.ToArray()
            Dim resultat(octectsMdp.Salt.Length + messagechiffre.Length - 1) As Byte
            Array.ConstrainedCopy(octectsMdp.Salt, 0, resultat, 0, octectsMdp.Salt.Length)
            Array.ConstrainedCopy(messagechiffre, 0, resultat, octectsMdp.Salt.Length, messagechiffre.Length)
            Return Convert.ToBase64String(resultat)
        End Function
        Public Shared Function Dechiffrer(ByRef messagechiffre As String, ByRef mdp As String) As String
            Dim message() As Byte = Convert.FromBase64String(messagechiffre)
            Dim salt(TailleSalt - 1) As Byte
            Dim octectschiffres(message.Length - TailleSalt - 1) As Byte
            Array.ConstrainedCopy(message, 0, salt, 0, TailleSalt)
            Array.ConstrainedCopy(message, TailleSalt, octectschiffres, 0, octectschiffres.Length)
            Dim octectsMdp As New System.Security.Cryptography.Rfc2898DeriveBytes(mdp, TailleSalt)
            octectsMdp.Salt = salt
            Dim ms As New IO.MemoryStream
            Dim algo As New System.Security.Cryptography.RijndaelManaged
            algo.Key = octectsMdp.GetBytes(TailleCle)
            algo.IV = octectsMdp.GetBytes(TailleIV)
            Dim cs As New System.Security.Cryptography.CryptoStream(ms, algo.CreateDecryptor, System.Security.Cryptography.CryptoStreamMode.Write)
            cs.Write(octectschiffres, 0, octectschiffres.Length)
            cs.Close()
            Return Encoding.Unicode.GetString(ms.ToArray)
        End Function
    Si vous avez des suggestions, n'hesitez pas !

  2. #2
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Si ca marche c'est l'essentiel...

    Ensuite tu as plusieurs type de cryptage et ca depens aussi du niveau de sécurité que tu souhaites. Si tu veux juste faire une protetion de base, bah un pass à deux balles lors du demarrage de la form sinon faut passer par Vigenère pour le cryptage sécurisé...

    Voila, si tu veux un morceau de code pour Vigenère dis le moi
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  3. #3
    Membre éclairé
    Avatar de warubi
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 399
    Par défaut
    Oui je veux bien avoir un morceau de code si cela ne te derange pas !

  4. #4
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Voila un petit module tout propre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    Option Explicit On
    Option Strict On
     
    Module M_Crypatage
     
        Private strMessage As String  ' Texte à crypter
        Private Const ChaineSuppl As String = "Pjkedfehzjbdejzdknezjfbzenfvozenflk,zmfj,zshvfdsbvnsdbhjvbdsnfcjzenkjcnhzdebvchjdsbvfnvlnszvc,lkszfmlzekfezjlkfnerjkvnfbvnsdn,vlkz,lvkf,kjvfnkenbvksbvkflz,fvlcza,v:cnkjvbnkerlv,kezv,ferngzerigerkhzfknrekjvbkjerbvhkenvnsnvkjdbvkhbfhkgrvkjnvqksbvrakjlfnklrz,avnerakjengvnez"
        Private Const Clef As String = "PoinT" 'a définir
        Public Declare Function sndPlaySoundA& Lib "winmm.dll" (ByVal lpszName As String, ByVal hModule As Int32)
        Public Const SND_ASYNC As Int32 = &H1
     
        Friend Sub wait(ByVal ms_to_wait As Long)
            Dim hb As Double
            hb = Environment.TickCount + ms_to_wait
            While Environment.TickCount < hb
                Application.DoEvents()
            End While
        End Sub
     
        Public Function Crypter(ByVal Message As String) As String
            Dim strLettre As System.String ' Chaque caractère du texte à crypter
            Dim strCrypt As System.String  ' Caractère après cryptage
            Dim strClé As System.String    ' Chaque caractère de la clef de cryptage
            Dim intCompteur As System.Int32
            Dim intCompteur1 As System.Int32
     
            Dim Resultat As String = ""
     
            strMessage = Message & ControlChars.VerticalTab & ChaineSuppl
            ' Lecture de chaque caractère du texte à crypter
            ' Addition de chaque caractère de la clef de cryptage au caractère correspondant du texte à crypter
            For intCompteur = 0 To strMessage.Length - 1 Step 1
                strLettre = strMessage.Substring(intCompteur, 1)
                strClé = Clef.Substring(intCompteur1, 1)
                strCrypt = Chr((Asc(strLettre) + Asc(strClé)) Mod 256) ' Mod 256 si addition > 256
                Resultat &= strCrypt ' Transcription de chaque caractère crypté 
                intCompteur1 += 1 ' Incrémentation du compteur de la clef
     
                If intCompteur1 = Clef.Length - 1 Then ' Si on atteint la fin de la clef, on revient au début
                    intCompteur1 = 0
                End If
            Next
     
            Return Resultat
        End Function
     
        Public Function Decrypter(ByVal Chaine As String) As String
            Dim strLettreCrypt As System.String ' Chaque caractère  du texte crypté
            Dim strCléDecrypt As System.String  ' Chaque caractère de la clef
            Dim strDecrypt As System.String     ' Caractère après décryptage
            Dim intCompteur2 As System.Int32
            Dim intCompteur3 As System.Int32
            Dim resultat As String = ""
            ' Lecture du texte à décrypter
            ' Soustraction de chaque caractère de la clef du caractère correspondant du texte à décrypter
            For intCompteur2 = 0 To Chaine.Length - 1 Step 1
                strLettreCrypt = Chaine.Substring(intCompteur2, 1)
                strCléDecrypt = Clef.Substring(intCompteur3, 1)
                If Asc(strLettreCrypt) - Asc(strCléDecrypt) < 0 Then
                    ' Si la soustraction < 0, on rajoute 256 sinon tel quelle
                    strDecrypt = Chr(Asc(strLettreCrypt) - Asc(strCléDecrypt) + 256)
                Else
                    strDecrypt = Chr(Asc(strLettreCrypt) - Asc(strCléDecrypt))
                End If
                resultat &= strDecrypt ' Transcription de chaque caractère décrypté
                intCompteur3 += 1
     
                If intCompteur3 = Clef.Length - 1 Then ' Si fin de clef, on revient au début
                    intCompteur3 = 0
                End If
            Next
     
            Return resultat
        End Function
    End Module
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  5. #5
    Expert confirmé
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Par défaut
    Citation Envoyé par Aspic
    Si ca marche c'est l'essentiel...

    Ensuite tu as plusieurs type de cryptage et ca depens aussi du niveau de sécurité que tu souhaites. Si tu veux juste faire une protetion de base, bah un pass à deux balles lors du demarrage de la form sinon faut passer par Vigenère pour le cryptage sécurisé...

    Voila, si tu veux un morceau de code pour Vigenère dis le moi
    Il vaudrait mieux utiliser des algos de chiffrement un peu plus robuste, le chiffre de vigenère a été cassé il y a plus d'un siècle.

  6. #6
    Membre éclairé
    Avatar de warubi
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 399
    Par défaut
    Si ca ne te derange pas, pourrais-tu m montrer un exemple de code ou un site qui propose ces algos plus robustes ?

  7. #7
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Citation Envoyé par bidou
    Il vaudrait mieux utiliser des algos de chiffrement un peu plus robuste, le chiffre de vigenère a été cassé il y a plus d'un siècle.
    Oui je m'en doute mais bon a moins qu'on veuille protéger le pass d'accès aux coffres des banques dans le monde pas besoin d'un algo très très sophistiqué

    Vigenère découragera les "petits hackers"

    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  8. #8
    Membre éclairé
    Avatar de warubi
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 399
    Par défaut
    Merci beaucoup pour vos reponses !

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 69
    Par défaut
    Si tu veux du robuste, prend le chiffement md5... mais je ne sais pas s'il existe des classes intégrées dans le Framework.

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

Discussions similaires

  1. Cryptage de fichier
    Par :GREG: dans le forum Composants VCL
    Réponses: 6
    Dernier message: 18/12/2008, 09h43
  2. Cryptage de colonnes sous Oracle
    Par Julian Roblin dans le forum SQL
    Réponses: 9
    Dernier message: 28/11/2006, 18h24
  3. [VB6]Cryptage[debutant]
    Par MegaBigBoss dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 11/03/2006, 20h21
  4. cryptage
    Par giminik dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 06/11/2002, 22h46
  5. Cryptage en C selon la méthode de césat
    Par shenron dans le forum C
    Réponses: 2
    Dernier message: 31/05/2002, 08h22

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