Génération des clés et signature

Fermé
aaa2017 Messages postés 9 Date d'inscription samedi 2 décembre 2017 Statut Membre Dernière intervention 29 mars 2024 - 15 juin 2019 à 02:11
aaa2017 Messages postés 9 Date d'inscription samedi 2 décembre 2017 Statut Membre Dernière intervention 29 mars 2024 - 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.

3 réponses

Whismeril Messages postés 19020 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 14 avril 2024 655
15 juin 2019 à 08:16
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.
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
15 juin 2019 à 22:38
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 .
0
aaa2017 Messages postés 9 Date d'inscription samedi 2 décembre 2017 Statut Membre Dernière intervention 29 mars 2024
17 juin 2019 à 22:07
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
0
Rejoignez-nous