Création d'une fonction de cryptage
Bonjour a tous les forumeurs et forumeuses, je dois dans le cadre d'un projet réalisé une fonction qui dans un fichier texte, cryptera le texte présent grace à une clef de cryptage, puis dans un nouveau fichier texte, le décryptera.
J'ai réussi ce programme, le problème, est qu'il ne fonctionne qu'avec des minuscules, j'aimerais pouvoir prendre en compte des majuscules. Si quelqu'un a une idée de comment faire, merci de bien vouloir me répondre =)
Code:
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 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
|
Public Class Form1
Dim tableau(26, 26) As Char
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim x As Integer = 0
For i As Int16 = 0 To 25 'i represente l'index de la ligne
For j As Integer = 0 To 25 'j représente l'index de la colonne
If 97 + i + j = 123 Then x = 26 'une fois arrivée à 123,on repasse a 26
tableau(i, j) = Chr(j + 97 + i - x) 'les cordonnées du tableau retournent un caractere
Next
x = 0
Next
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim normal As New IO.StreamReader("H:\Travail\Mon projet\exemple.txt") 'on lit le fichier text
Dim crypte As New IO.StreamWriter("H:\Travail\Mon projet\crypte.txt") ' on va écrire dans un nouveau fichier texe
Dim i As Integer
Dim j As Integer
Dim x As Integer
Dim y As Integer
Dim g As Integer
Dim p As Integer
Dim toto As String = ""
Dim cryp As String = ""
g = Len(clef.Text)
While normal.Peek > 0 'Pour le passage a la ligne
toto = normal.ReadLine 'pour lire la ligne jusqu'au dernier caractere
p = Len(toto)
For i = 0 To p - 1
If exclusion(toto(i)) = True Then
x = Asc(toto(i)) - 97
y = Asc(clef.Text(j)) - 97
j = j + 1
If j > g - 1 Then
j = 0
End If
cryp = cryp & tableau(x, y) 'permet le cryptage grace au tableau précédent
Else
cryp = cryp & toto(i)
End If
Next
crypte.WriteLine(cryp)
cryp = ""
End While
normal.Close()
crypte.Close()
End Sub
Function exclusion(ByVal c As Char) As Boolean 'si le caractere n'est pas compris entre a et z, alors on le lit, puis on l'écrit sans le crypter.
If Asc(c) < 97 Or Asc(c) > 122 Then
Return False
Else
Return True
End If
End Function
Private Sub Decryp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Decryp.Click
Dim crypte As New IO.StreamReader("H:\Travail\Mon projet\crypte.txt") 'on lit le fichier crypté
Dim decrypte As New IO.StreamWriter("H:\Travail\Mon projet\decrypte.txt") 'on écrira dans le nouveau fichier texte
Dim n As Integer
Dim p As Integer
Dim i As Integer
Dim j As Integer
Dim x As Integer
i = 0
j = 0
Dim cryp As String = ""
Dim decryp As String = ""
p = Len(clef.Text)
While crypte.Peek > 0 'lit jusqu'au dernier caractere
cryp = crypte.ReadLine 'pour lire la ligne
n = Len(cryp)
For i = 0 To (n - 1)
If exclusion(cryp(i)) = True Then
If Asc(clef.Text(j)) > Asc(cryp(i)) Then
x = (27 - (Asc(clef.Text(j)) - 97) + (Asc(cryp(i)) - 97)) - 1 ' la clef de décryptage
Else
x = Asc(cryp(i)) - 97 - (Asc(clef.Text(j)) - 97) ' deuxieme partie de la clef de décryptage.
End If
j = j + 1
If j > p - 1 Then
j = 0
End If
decryp = decryp & Chr(x + 97) 'écriture dans le fichier
Else
decryp = decryp & cryp(i) 'si la fonction exclusion est fausse alors on recopie, on ne décrypte pas
End If
Next
decrypte.WriteLine(decryp)
decryp = ""
End While
crypte.Close() 'on ferme les deux fichiers
decrypte.Close()
End Sub
End Class |
Pour plus d'informations et de compréhension sur le code, n'hésitez pas à me mp. Je vous remercie d'avance pour votre aide future