Accueil > > > MINI RSA (CRYPTAGE ASYMÉTRIQUE)
MINI RSA (CRYPTAGE ASYMÉTRIQUE)
Information sur la source
Description
Toute petite bibliothèque qui implémente l'algorithe de cryptage asymétrique RSA sur des nombres entiers natifs (long ou long long). Elle permet de comprendre le fonctionnement de cet algorithme qui est souvent noyé au milieu d'une bibliothèque très touffue et optimisée (type open ssl). Mais avec une clef sur une trentaine de bits, le niveau de sécurité est beaucoup trop faible pour un quelconque usage serieux. Tout petit projet Visual 2005 en mode console. Un header + body d'implementation de la librairie + body de test.
Source
- namespace mini_rsa
- {
-
- // type des entiers utilisés comme clef
- typedef long long big_int ; // doit être un type entier signé
-
- // partie entière du log en base 2 de la plus grande valeur possible d'un 'big_int' (ici log( 2^63-1 ) == 62)
- const int log_big_int = 62 ; // attention : cette valeur doit être mise à jour si bit_int est changé.
-
- // nb max de bits utilisables
- const int max_nb_bit = log_big_int/2 ; // comme on a des multiplications, on ne peut utiliser que la moitié des bits
-
- // renvoie un entier aléatoire sur nb_bit bits (le bit de poids fort étant toujours à 1)
- // cette fonction n'est là que pour les tests.
- big_int random ( int nb_bit ) ;
-
- // génère une bi-clef (= paire clef publique + clef privée) sur nb_bit
- // la clef privée = paire ( pri,mod ) et la clef publique = paire ( pub,mod )
- void compute_keys ( int nb_bit , big_int * pub , big_int * pri , big_int * mod ) ;
-
- // chiffrement (= déchiffrement avec la clef réciproque)
- // 'message' contient le message à chiffrer/dechiffrer sous forme d'un
- // entier qui doit être inferieur à 'mod'.
- // le paramètre 'exp' doit recevoir le 'pub' ou le 'pri' sorti de 'compute_keys'.
- // le paramètre 'mod' doit recevoir le 'mod' sorti de 'compute_keys'.
- // le paramètre 'message' contient le message à chiffrer.
- // (Attention : C'est l'appelant qui doit convertir son buffer de données en 'big_int'.)
- // le retour est le message chiffré.
- big_int encrypt ( big_int exp , big_int mod , big_int message ) ;
-
- }
namespace mini_rsa
{
// type des entiers utilisés comme clef
typedef long long big_int ; // doit être un type entier signé
// partie entière du log en base 2 de la plus grande valeur possible d'un 'big_int' (ici log( 2^63-1 ) == 62)
const int log_big_int = 62 ; // attention : cette valeur doit être mise à jour si bit_int est changé.
// nb max de bits utilisables
const int max_nb_bit = log_big_int/2 ; // comme on a des multiplications, on ne peut utiliser que la moitié des bits
// renvoie un entier aléatoire sur nb_bit bits (le bit de poids fort étant toujours à 1)
// cette fonction n'est là que pour les tests.
big_int random ( int nb_bit ) ;
// génère une bi-clef (= paire clef publique + clef privée) sur nb_bit
// la clef privée = paire ( pri,mod ) et la clef publique = paire ( pub,mod )
void compute_keys ( int nb_bit , big_int * pub , big_int * pri , big_int * mod ) ;
// chiffrement (= déchiffrement avec la clef réciproque)
// 'message' contient le message à chiffrer/dechiffrer sous forme d'un
// entier qui doit être inferieur à 'mod'.
// le paramètre 'exp' doit recevoir le 'pub' ou le 'pri' sorti de 'compute_keys'.
// le paramètre 'mod' doit recevoir le 'mod' sorti de 'compute_keys'.
// le paramètre 'message' contient le message à chiffrer.
// (Attention : C'est l'appelant qui doit convertir son buffer de données en 'big_int'.)
// le retour est le message chiffré.
big_int encrypt ( big_int exp , big_int mod , big_int message ) ;
}
Conclusion
Destinée à tous ceux qui veulent comprendre le détail de cet algo omniprésent dans le monde de la crypto, mais qui n'ont pas un réél besoin de sécurité. Si quelqu'un s'amuse à définir une classe de nombres entiers arbitrairement longs dont les opérateurs classiques sont définis, cette bibliothèque pourra offrir une vraie sécurité. Encore plus simple : la recoder en Python ou Ruby qui offrent déjà des entiers arbitrairement longs. Mais bien sûr, ces langages proposent déjà des fonctions de cryptage RSA.
Historique
- 10 décembre 2008 14:47:27 :
- Pas de modif mais une retouche après prévisualisation.
(petit bug dans le site ? la prévisalisation semble avoir des effets définitifs...)
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
impression [ par Live2Die ]
Je suis programmeur pascal et j'ai voulu me mettre au c++J'ai presque termener mon premier programme, mais un probleme persiste... je ne peux imprimer
Hors programmation... [ par NitRic ]
Seulement une petite suggestion: Il serait bien d'indiquer dans les message(demande d'aide) quel compilateur on utilise... Pourquoi je dit ca:Allez vo
Simple curiosité [ par Mike ]
Je voudrais savoir quel langage de programmation utilise les fabricants des meilleurs jeux vidéos tel que Fifa, cycling manager, ... ?Merci d'avance.
Question simple [ par SysBreak ]
Salut, j'ai Borland C++ 5 v.pro et j'aimerais savoir dans quel répertoire je dois enregistrer mes fichiers sources créés ? Pour les projets j'ai bien
Qui à l'intention de créer un projet simple sur les base de données ? [ par Lallthis ]
Le genre de projet où on ouvre un base, on écris dedans,et on recherche un élément.
[debutant] Simple mais comment faire [ par Coyito ]
bonjourj'ai dans mon prgint *b;b est un pointeur vers un int, comment puis connaitre la valeur de cet int sans modifier le programme en amont ???Merci
une question toute simple.. aidez moi, stp!!! [ par xose ]
Je viens d'installer le Borland C++. Une fois que le programme est compilé, la fenetre noire disparait toute suite!! Je n'arrive pas à voir jamais les
Exemple de EnumPrinters (qui fonctionne) en C++ [ par nico ]
Je voudrais que mon programme puisse détecter l'imprimante par défaut utilisée par mon PC. Pour ce faire j'ai trouvé la fonction "EnumPrinters". Le pr
Sortie formatée avec printf: précision [ par GoldenEye ]
J'ai besoin d'afficher avec printf un double avec une précision dynamique.Par exemple, l'user rentre une précision epsilon( 0.01 par ex ) et je veux l
Deamde toute simple [ par GoldenEye ]
Vous allez dire que Nix est un dictateurVous allez dire que Jo est un emmerdeurVous allez dire que je suis un chieurSi Jo vous demande sans cesse de m
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
MATRICE TEMPLATEMATRICE TEMPLATE par hjr2610
Cliquez pour lire la suite par hjr2610 RE : SAC A DOS RE : SAC A DOS par hadjkaddour
Cliquez pour lire la suite par hadjkaddour
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|