Cryptage rsa simple d'utilisation

Soyez le premier à donner votre avis sur cette source.

Vue 7 701 fois - Téléchargée 869 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

Saros
Messages postés
921
Date d'inscription
vendredi 20 décembre 2002
Statut
Membre
Dernière intervention
23 septembre 2010
-
Bah pour le nombre n donné, il n'y a qu'ne décomposition possible, en deux nombres premiers, puisque n est lui-même produit de ces deux nombres...
kenjimax
Messages postés
82
Date d'inscription
dimanche 3 août 2003
Statut
Membre
Dernière intervention
10 août 2007
-
Ce n'est pas un vrai cryptage RSA, enfin pas dans le sens ou un cryptage RSA est théoriquement "invulnérable". Les nombres ne sont pas assez grands !

"Il faudrait faire une routine qui décompose un nombre en facteurs premiers, de sorte à donner directement p et q à partir de n.
"

Ca c'est idiot :D Tout nombre n n'est pas le produit de deux nombres premiers, loin de là ! On définie toujours une clé publique selon cette méthode : on prend deux nombres premiers que l'on multiplie entre eux (pour eviter une possible factorisation de n qui permettrait d'économiser beaucoup de temps pour le décryptage sans clé, à l'aide des propriétés des congruences

Cela dit, si le programme est lent, c'est aussi (et surtout ?) parce que le VB n'est pas fait pour ce genre de calcul brut. L'assembleur en serait capable.
En tout cas, voila encore une source qui gagnerait à etre programmée en 64bits :) Ca viendra !
Saros
Messages postés
921
Date d'inscription
vendredi 20 décembre 2002
Statut
Membre
Dernière intervention
23 septembre 2010
-
On peut aussi chercher, pour calculer m^n mod b, le premier entier i qui vérifie m^i mod b = 1
Il suffit alors de calculer m^(n mod i) mod b

Le système de la décomposition binaire est astucieux :)
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.
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

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.