Bonjour à tous ,
je suis pas très fort en vb mais je me lance dans la programmation d'un code pour crypter/décrypter des fichiers de tous types (je commence par tester sur les fichiers txt) à partir du principe de l'algorithme RSA :
avant tout je créer une clé du type : n = pq où p et q sont deux entiers , d un entier quelconque premier avec phi(n) = p-1 q-1 et e son inverse dans Z/phi(n) Z .
Je met ces informations la forme suivante dans un fichier texte : "n,phi(n);d:e" (les séparateurs , ; : sont volontaires pour pouvoir recueillir les informations dans le programme).
Ensuite je programme l'algorithme suivant :
l'utilisateur rentre le chemin d'accès au fichier clair
je récupère sous forme de chaine de caractère son contenu :
dim fic = My.Computer.Filesystem.Readall text(textbox2.text)
ainsi que sa longueur
dim len = fic.length
j'invite l'utilisateur à choisir le fichier contenant la clé
je récupère le contenu string du fichier texte contenant la clé : key
je récupère ses informations en utilisant les fonctions mid , instr et en convertissant sous le type integer :
dim n as integer
dim phi as integer
.
.
.
n = mid(key, 1, Instr(key, ",")-1)
phi = mid(key , instr(key, ",") +1 , instr(key , ";")-1)
d = mid (key , instr(key,";") +1, instr(key,":") -1 )
e = mid(key, instr(key,":") +1 , )
ensuite je débute l'algorithme:
Pour le décryptage , l'algorithme est le suivant :Code:dim i as integer i = 1 dim s dim t dim result = "" while i <= len s = Asc (Mid(fic,i,1)) t = s^e t=t mod n result = result & char(t) i = i+1 end while My.Computer.Filesystem.writealltext(textbox3.text , result)
je récupère les mêmes informations que précédemment dans le fichier clé dans les variables n , phi ,d et e ainsi que le contenu du fichier crypté dans la variable fic.
Code:i=1 While i<= len s = Asc(mid(fic,i,1)) t = s^d t=t mod n result = result & char(t) i= i +1 end while
.
J'éxecute ce programme (cryptage puis décryptage sur le même fichier texte) sur un fichier texte contenant la chaine "abcdefghijklmnopqrstuvxy" au départ ... mais PAS A l'ARRIVEE ...
Je ne comprends pas d'où ca vient , outre les probleme de "dépassement de capacité" lorsque je calcul les puissances (que je résout en mettant une boucle en remettant le résultat de t*t modulo n à chaque incrémentation) .
Pourriez vous m'aider ?
Merci d'avance
Bonne journée
-----