Génération des clés et signature [Fermé]

Messages postés
8
Date d'inscription
samedi 2 décembre 2017
Statut
Membre
Dernière intervention
27 juin 2019
- - Dernière réponse : aaa2017
Messages postés
8
Date d'inscription
samedi 2 décembre 2017
Statut
Membre
Dernière intervention
27 juin 2019
- 17 juin 2019 à 22:07
Bonjour,

Le processus DSA (Algorithme de Signature Numérique) se fait en trois étapes :

• génération des clés
• signature du document
• vérification du document signé

1- Code de la génération des clés :


Imports System.Text
Imports System.Security.Cryptography
Imports System.IO
Imports System.IO.Directory

Public Class FrmDSA
    Dim p, q As Integer
    Dim i, num1, num2, count As Integer
    Dim x, s As Integer
    Dim h, y, z As Integer
    Dim g, w, u1, u2 As Integer
    Dim s1, s2, v As Integer
    Dim PGCD, r, c, a, b, k, n, d, t As Integer
    Dim preserves As Integer
    Dim preserveq As Integer

Private Sub BtnGenerate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnGenerate.Click

        Dim i, num1, num2, count As Integer

        num1 = Val(txtnumq.Text)
        count = 0
        For i = 1 To num1
            If num1 Mod i = 0 Then
                count += 1
            End If
        Next

        If count = 2 Then
            MsgBox("'q' est premier, continuer.")
        Else
            MsgBox("'q' n'est pas premier. Veuillez réessayer.")
        End If

        num2 = Val(txtnump.Text)
        count = 0
        For i = 1 To num2
            If num2 Mod i = 0 Then
                count += 1
            End If
        Next

        If count = 2 Then
            MsgBox(" 'p' est premier, continuer.")
        Else
            MsgBox("'p' n'est pas premier. Veuillez réessayer.")
        End If


        z = (Val(txtnump.Text) - 1) / Val(txtnumq.Text)
        txtnumz.Text = z

        If 1 < Val(txtnumh.Text) < (Val(txtnump.Text) - 1) Then

            g = (Val(txtnumh.Text) ^ z) Mod Val(txtnump.Text)
            txtnumg.Text = g And g > 1

        End If

        If 0 < Val(txtnumx.Text) < Val(txtnumq.Text) Then

            y = (Val(txtnumg.Text) ^ Val(txtnumx.Text)) Mod Val(txtnump.Text)
            txtnumy.Text = y
        End If

        If Val(txtnumh.Text) > (Val(txtnump.Text) - 1) Or Val(txtnumx.Text) > Val(txtnumq.Text) Then

            MsgBox("les valeurs de 'h' ou 'x' incorrects. Veuillez réessayer.")

        End If

        txtkeypub.Text = txtnump.Text + txtnumq.Text + txtnumg.Text + txtnumy.Text

        txtkeypri.Text = Val(txtnumx.Text)

    End Sub  



2- Code de la signature du document :


Private Sub BtnSignature_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSignature.Click

        If 0 < Val(txtnums.Text) < Val(txtnumq.Text) And 0 <= Val(txtnumM.Text) < Val(txtnump.Text) Then

            s1 = ((Val(txtnumg.Text) ^ Val(txtnums.Text)) Mod Val(txtnump.Text)) Mod Val(txtnumq.Text)
            txtnums1.Text = s1

            s = Val(txtnums.Text)
            q = Val(txtnumq.Text)

            a = 1
            b = 0
            k = 0
            n = 1

            While q > 0

                r = s Mod q
                c = (s - r) / q

                t = a
                d = b
                a = k
                b = n

                k = t - c * k
                n = d - c * n

                s = q
                q = r

            End While

            If a > b Then
                txtnumbezout.Text = a
            Else : txtnumbezout.Text = b
            End If

            s2 = ((Val(txtnumM.Text) + (Val(txtnums1.Text) * Val(txtnumx.Text))) * Val(txtnumbezout.Text)) Mod Val(txtnumq.Text)
            txtnums2.Text = s2

        End If

        If Val(txtnums.Text) > Val(txtnumq.Text) Or Val(txtnumM.Text) > Val(txtnump.Text) Then

            MsgBox("les valeurs de 's' ou 'M' incorrects. Veuillez réessayer.")

        End If

        txtnumsign.Text = Val(txtnums1.Text) & Val(txtnums2.Text)

    End Sub  
  • prochainement, je continuerai le code.
Afficher la suite 

3 réponses

Messages postés
13522
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
21 juillet 2019
289
0
Merci
Bonjour
Vb95 t’a demandé d'arrêter d’ouvrir des sujets à la pelle.
C’est contre productif pour toi, puisque dans aucun message il n’y a d’information complète concernant ton besoin.

Ici il y a du code, ailleurs y’a des questions.

Donc tu vas copier coller le code dans le fil d’une question et ce sujet sera supprimé par un modérateur.
Messages postés
1909
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
21 juillet 2019
65
0
Merci
Bonjour
Et en plus un beau mélange de VB6 et VB Net : MsgBox et Val par exemple sont des mots clé en VB 6 .
Pour éviter cela dans les Propriétés du projet dans l'onglet Références supprimer l'import à Microsoft Visual Basic .
Et dans l'onglet Compiler mettre Option Strict et Option Explicit sur On .
Ceci t'obligera à déclarer toutes tes variables correctement et d'éviter les conversions implicites .
Messages postés
8
Date d'inscription
samedi 2 décembre 2017
Statut
Membre
Dernière intervention
27 juin 2019
0
Merci
Bonsoir,

1- J'ai écrit : "prochainement, je continuerai le code.", c a d, il y a une suite de code que je vais le terminer où il y a du code et il y a des questions,

2- Merci pour vos corrections,

3- l'expéditeur a envoyé un fichier signé au destinataire,
ce fichier signé est comme suite :
"68c40e7e13b9419b49707ee734bf6ad1f99644ae"
  • le code du fichier signé est comme suite :


Imports System.IO

Public Class FrmUtilisateur

    Public Function SHA1(ByVal content As String) As String

        Dim Molecul3 As New Security.Cryptography.SHA1CryptoServiceProvider
        Dim Bytestring() As Byte = System.Text.Encoding.ASCII.GetBytes(content)
        Bytestring = Molecul3.ComputeHash(Bytestring)
        Dim finalstring As String = Nothing

        For Each bt As Byte In Bytestring
            finalstring &= bt.ToString("x2")
        Next
        Return finalstring

    End Function 


4- le destinataire reçoit le fichier signé et va récupérer le fichier original,
ce fichier original est comme suite :
"Amina"
  • le code du fichier original est comme suite :


Imports System.IO
Imports System.Security.Cryptography


Module Decrypt

    Sub DecryptText()

        Dim key As Byte() = {&H1, &H2, &H3, &H4, &H5, &H6, &H7, &H8, &H9, &H10, &H11, &H12, &H13, &H14, &H15, &H16}
        Dim IV As Byte() = {&H1, &H2, &H3, &H4, &H5, &H6, &H7, &H8, &H9, &H10, &H11, &H12, &H13, &H14, &H15, &H16}

        Try
            Dim DecryptStream As FileStream
            DecryptStream = New FileStream("E:\tests\gema.txt", FileMode.OpenOrCreate)
            Dim RMCrypto As New RijndaelManaged()

            Dim CryptStream As New CryptoStream(DecryptStream, RMCrypto, CreateDecryptor(key, IV), CryptoStreamMode.Read)
            Dim SReader As New StreamReader(CryptStream)

            Frmverif.TxtFichierClair.Text = "The decrypted original text was:" & vbCrLf & SReader.ReadToEnd()

            SReader.Close()
            DecryptStream.Close()

        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical, "Decrypting Error")

        End Try
    End Sub
End Module 


 Private Sub BtnFichierClair_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnFichierClair.Click

        DecryptText()

    End Sub 


5- ma question : j'ai pas pu récupérer le fichier original ?
c a d le code du fichier original, n'a pas pu exécuter ?
Ou se pose le problème?

merci pour vos réponses et vos conseils