Cryptage rsa simple d'utilisation

Soyez le premier à donner votre avis sur cette source.

Vue 7 625 fois - Téléchargée 866 fois

Description

Avant toute chose, sachez que j'ai créé un 'rapport de TP' sous Word qui contient mode d'emploie et permet de mieux comprendre le fonctionnement de l'application. Il s'agit de la copie de mon compte rendu de projet de Visual Basic

J'ai développé cette application avec comme objectif de permettre à des personnes, ne connaissant pas ou (n'étant pas interressé par) le fonctionnement cryptage RSA, de crypter ses messages, provenants d'un fichier texte ou directement tapés à l'écran.
Un module permet de s'identifier(pas encore avec mot de passe) ou de s'inscrire (cette étape a été dure à réaliser pour permettre à n'importe qui de l'utiliser.) dans la base access gérant toutes les clés publiques.
Le cryptage:décryptage des messages passe par la conversion du texte en code ASCII.

P.S.:Comme ce n'est que la deuxième application sérieuse que je crée, l'interface de communication application/utilisateur final n'est sûrement pas optimisée.

Conclusion :


Un bug encore existant que j'ai relevé est une erreur ou problème si inscription avec un pseudo déjà existant.
Bug récurrent: mauvais cryptage/décryptage avec cetaines clés lorsque le message est signé.
Je n'ai pas essayer de crypter un message super long, vu que le cryptage d'un texte de 40 caractères avec des clés p=19 et q=23 dure enriron 10 secondes avec un p4 2.8GHz; c'est l'inconvénient de ce type de cryptage: efficace, mais long.
Enfin, merci à dnob700 pour sa source dont j'ai repris le module de classe InfinitePrecision.cls (http://www.vbfrance.com/code.aspx?id=22182) qui m'a permis de faire fonctionner mon application avec des clés dépassant le nombre 11!

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_jupiter
Messages postés
34
Date d'inscription
lundi 5 août 2002
Statut
Membre
Dernière intervention
9 janvier 2009
-
Bonjour,
Le programme boucle lors de la création du compte après avoir saisi par exemple 97 et q=1.
Manque également dans le zip le .doc d'explications dont tu nous parles.
Saros
Messages postés
921
Date d'inscription
vendredi 20 décembre 2002
Statut
Membre
Dernière intervention
23 septembre 2010
-
Problème lors du cryptage : dans "Bonjour" le u se transforme en (R).
Saros
Messages postés
921
Date d'inscription
vendredi 20 décembre 2002
Statut
Membre
Dernière intervention
23 septembre 2010
-
Et puis c'est bizarre que l'utilisateur soit obligé d'entrer p et q, on dirait qu'il a le choix alors qu'en fait il n'y a qu'une seule possibilité... Il faudrait faire une routine qui décompose un nombre en facteurs premiers, de sorte à donner directement p et q à partir de n.

truc.CStrToByte(1)
tu as oublié les guillemets :) heureusement que VB fait la conversion...

Et puis aussi, dans le message crypté, fais des modulos 256 partout, parce que le caractère 305 il existe pas ^^
Et puis ça te permet d'écrire le message crypté directement dans un fichier texte, sans écrire les chiffres à la bourin, mais en écrivant les caractères... Je ne sais pas si je me suis bien expliqué :)

Private t() As Long
t ne contient que des Byte, ça mange beaucoup de mémoire pour rien

Quand tu cryptes, fais des DoEvents quelque fois, je suis en train d'essayer avec 241 et 353, je te dis pas comment ça rame (2,6 GHz 2 procs) ^^

Au fait, je viens de lire le Compte-rendu, où tu as écrit pourquoi de Alice vers Jean le u avait des ratés, fais pas attention à mon premier message

Et puis pour le cryptage avec 241 et 353 j'ai fini par abandonner... Mais je persiste qu'il devrait y avoir un moyen d'accélérer notablement le calcul, je sais que de nos jour le cryptage se réalise avec des nombre n pouvant aller jusqu'à 130 chiffres.

Voilà, sinon c'est la première fois que je vois une implémentation de l'algorithme depuis que j'ai appris c'était quoi le RSA, donc j'ai trouvé bien interressant :)

Pis ça vaut bien un 9/10
Saros
Messages postés
921
Date d'inscription
vendredi 20 décembre 2002
Statut
Membre
Dernière intervention
23 septembre 2010
-
Et puis j'ai une idée pour le calcul simple de modulo avec de grandes puissances, j'implémente un bout de code puis je te l'envoie
cs_Warny
Messages postés
478
Date d'inscription
mercredi 7 août 2002
Statut
Membre
Dernière intervention
10 juin 2015
-
Salut,
Pour accelerer un modulo avec des puissances de grands nombres il faut utiliser la propriété suivante :
(n * m) mod x = (n mod x) * (m mod x)
ensuite pour réduire le nombre de calculs tu peux t'appuyer sur des propriétés du genre :
m^(x+y) = m^x * m^y
et
m^(x*y) = (m^x) ^y

par exemple pour faire
15^6 mod 29 = 5
tu décomposes en
(((15^3) mod 29) ^2 mod 29) = 5

si tu doit calculer un nombre ou e est premier tu fais
15^7 mod 29 ((((15^3) mod 29) ^2 mod 29) * 15) mod 29 17
le plus rapide est de se rapprocher des puissances de 2 et de cacher un grand nombre de calculs
par exemple
14^29 mod 31=
14^16 * 14^8 * 14^4 * 14 mod 31 (il faut s'appuyer sur une décomposition binaire de e pour aller plus vite)
la on calcule
14^4 mod 29 = (14^2 mod 29)^2 mod 29
14^8 mod 29 = (14^4 mod 29)^2 mod 29 (on récupère le résultat précédent
14^16 mod 29 = (14^8 mod 29)^2 mod 29

puis on multiplie les termes les uns après les autres avec les modulos

résultat : très peu de calculs, des calculs simples, peu de mémoire utilisée.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.