RSA en c++ : tentative
cor3ntino10
Messages postés
10
Date d'inscription
Statut
Membre
Dernière intervention
-
sambia39 Messages postés 610 Date d'inscription Statut Membre Dernière intervention -
sambia39 Messages postés 610 Date d'inscription Statut Membre Dernière intervention -
Bonjour, je suis un amateur de programmation en C++; j'ai voulu faire un programme de chiffrement RSA mais j'ai un probleme lors du décryptage comme vous pouvez le voir sur l'image mais je ne comprend pas où ca coince ..
Merci de votre aide !

Merci de votre aide !

#include <iostream> #include <string> #include <cmath> #include <stdio.h> #include <math.h> using namespace std; int main() { unsigned long long int p; unsigned long long int F; unsigned long long int d=1; unsigned long long int k; unsigned long long int q; unsigned long long int T; unsigned long long int M; unsigned long long int G; long double h; double n; unsigned long long int e=1; long double c; long double w; long double y; cout << "P et Q deux nombres premiers" << endl; cout << "P= "; cin >> p; cout << "Q= "; cin >> q; n=q*p; cout << "n= " << n << endl; F=((p-1)*(q-1)); cout << "F= " << F << endl; do { e = e + 1; if (F % e == 1) { break; } } while (e < F); cout << "e= " << e << endl; do { d = d + 1; } while (((e*d)%F) != 1); cout << "d= " << d << endl; cout << endl; cout << "Cle publique: (" << n << ";" << e << ")" << endl; cout << "Cle privee: (" << n << ";" << d << ")" << endl; cout << endl; cout << "TEST:" << endl; cout << "Codage " << endl; cin >> M; c=pow(M,e); if (c >= n) { c=(fmod(c,n)); } cout << "Se crypte en: " << c << endl; cout << endl; cout << "Decodage " << endl; cin >> G; h=pow(G,d); if (h>=n) { h=(fmod(h,n)); } cout << "Se decrypte en: " << h << endl; }
A voir également:
- RSA en c++ : tentative
- Forfait internet rsa orange - Accueil - Box & Connexion Internet
- Rsa vinted - Guide
- SVP! aidez moi !!cryptage décryptage RSA NTL - Forum Programmation
3 réponses
Ok je pourrait t'aider car moi aussi je suis un fan du c++ et je suis devenu un pro.
Quel logiciel utilise tu pour coder?
Quel logiciel utilise tu pour coder?
cor3ntino10
Messages postés
10
Date d'inscription
Statut
Membre
Dernière intervention
J'utilise Code block ! J'avais commencé a apprendre avec le site du zéro maintenant nommé openclassroom ! Merci bien
ElementW
Messages postés
4814
Date d'inscription
Statut
Contributeur
Dernière intervention
1 223
cor3ntino10
Messages postés
10
Date d'inscription
Statut
Membre
Dernière intervention
Je ne comprend pas pourquoi le decrypatge ne marche pas alors que je l'ai fait de la même que le cryptage mis à part que la puissance change pour décoder .. Le e devient d
Salut, fmod c'est pour les virgules flottantes, en cryptographie la moindre approximation fausse tout.
Des flottants entiers ont moins de précision que les types intégraux qui leur sont analogue: les
Si tu veux faire joujou avec des entiers ou flottants de précision arbitraire, regarde du coté de GMP.
doubles n'ont que 52 bits de mantisse, or ils prennent autant de place qu'un
long long int: 64 bits. Donc moins de place pour le nombre.
Si tu veux faire joujou avec des entiers ou flottants de précision arbitraire, regarde du coté de GMP.
Bonjours
Avant tout quand on est un pro de la programmation comme certains le revendiquent en ne dit pas cryptage car c'est un procéder et d'ailleurs, dans le domaine informatique, mathématique ou cryptographique, On n'utilise pas le terme ou le mot cryptage, mais chiffrement tout comme il y a une différence bien distincte entre codage et chiffrement ou cryptage.
De plus la méthode que vous essayer d'implémenté est dite chiffrement asymétrique RSA et non cryptage; le cryptage est l'ensemble des procédés de chiffrement RSA. En cryptographier pour résumer, un texte ou donner brut en clair est appelé Texte clair ou donné non chiffrer sa version chiffré est appelé texte ou donnée chiffrer donc le chiffrement a pour objectif de transformer les données non chiffrés en donnée chiffré et le déchiffrement est quant à lui le contraire du chiffrement. Le ou les informations de conversions ( claire to chiffré or chiffré to déchiffré) sont appelés clés cryptographiques ou clé de chiffrement .
Le Code source écrit par @cor3ntino10 n'est pas aux points et ne présente rien d'un chiffrement asymétrique; dès le départ les données du problème sont mal comprises et ce n'est pas une de ses différentes instructions qui vont fournir un chiffrement ou détermine de très grands nombres premiers. Vous allez dire qu'un ordinateur ne peut travailler avec de si grand nombre et que certaines machines sont limitées à 64 bits. Oui et des professionnels vous diront utilisé un langage de programmation qui permet de travailler avec de si grand nombre; exemple le langage python qui permet de manipuler des entiers de taille non fixés; "Alors le RSA ne peut être implémenté en langage C ? et comment faire pour générer un si grand nombre " oublié la programmation un moment, car ce n'est plus du domaine informatique mais le domaine des mathématiques et de l'algorithmique (les fondation de la cryptographie) qui dans le cas des mathématique, va nous permettre de savoir si ont peut générer de très grand nombres et si possible fixé une limite Max, l'algorithmique quant à elle, nous permettra d'élaborer un ou des algorithmes nous permettant d'implémenté notre résolution mathématique "mais comment ?" exemple :
(GMP pourquoi ?) bref.
Les tutoriels c'est bien mais, vaut mieux ne pas prendre comme argent comptent tout ce qui est écrit. Retourné sur le site du tutoriel mentionné dans les précédents postes vous verrez qu'il utilise une bibliothèque ou un programme déjà écrit pour argumenter le sujet, mais en aucun cas en vous expliqueras comment c'est différentes procédures / algorithme on été implémenté. Beaucoup de novices pourront chiffrer en RSA en suivant le tutoriel c'est le bute recherché , mais que savent ils réellement sur son fantastique algorithme ou les formidables technique mathématique qui ont aboutie à une telle prouesse ? "faut savoir reconnaître et admirer l'élégance mathématique mais aussi de de la physique père de l'électronique". Ils sauront chiffrer et RSA mais ... qu'est-ce qu'ils ont appris où compris, pourront-ils écrire une variante de chiffrement asymétrique d'eux même où ils vont encore à nouveau chercher des tutoriels traitant des variantes de chiffrement asymétrique ?.
En conclusion, commencer par comprendre les algorithmes ensuite implémenté les procédure permettant de réaliser un chiffrement asymétrique RSA.
Puis choisissez un langage procédurale ou fonctionnel qu'un langage orienté objet.
Et au final amuser vous à chiffrer déchiffrer des donnés et pour ceux qui sont vraiment des professionnels amusez-vous à déchiffrer une donnée sans connaître la clé de chiffrement.
Débuter avec Euclide "plus grand diviseur commun cours de quatrième (les PGCD) " ensuite écrire l'algorithme Euclide et sur la base du même algorithme adapté là afin de rechercher deux nombres premiers entre eux et après ça, exploré d'autre horizon exemple mettre très rapidement des nombre en puissance , générer des nombre premier etc. après tout ça vous y verrez plus clair et la difficulté de la "choses".
à bientôt.
Avant tout quand on est un pro de la programmation comme certains le revendiquent en ne dit pas cryptage car c'est un procéder et d'ailleurs, dans le domaine informatique, mathématique ou cryptographique, On n'utilise pas le terme ou le mot cryptage, mais chiffrement tout comme il y a une différence bien distincte entre codage et chiffrement ou cryptage.
De plus la méthode que vous essayer d'implémenté est dite chiffrement asymétrique RSA et non cryptage; le cryptage est l'ensemble des procédés de chiffrement RSA. En cryptographier pour résumer, un texte ou donner brut en clair est appelé Texte clair ou donné non chiffrer sa version chiffré est appelé texte ou donnée chiffrer donc le chiffrement a pour objectif de transformer les données non chiffrés en donnée chiffré et le déchiffrement est quant à lui le contraire du chiffrement. Le ou les informations de conversions ( claire to chiffré or chiffré to déchiffré) sont appelés clés cryptographiques ou clé de chiffrement .
Le Code source écrit par @cor3ntino10 n'est pas aux points et ne présente rien d'un chiffrement asymétrique; dès le départ les données du problème sont mal comprises et ce n'est pas une de ses différentes instructions qui vont fournir un chiffrement ou détermine de très grands nombres premiers. Vous allez dire qu'un ordinateur ne peut travailler avec de si grand nombre et que certaines machines sont limitées à 64 bits. Oui et des professionnels vous diront utilisé un langage de programmation qui permet de travailler avec de si grand nombre; exemple le langage python qui permet de manipuler des entiers de taille non fixés; "Alors le RSA ne peut être implémenté en langage C ? et comment faire pour générer un si grand nombre " oublié la programmation un moment, car ce n'est plus du domaine informatique mais le domaine des mathématiques et de l'algorithmique (les fondation de la cryptographie) qui dans le cas des mathématique, va nous permettre de savoir si ont peut générer de très grand nombres et si possible fixé une limite Max, l'algorithmique quant à elle, nous permettra d'élaborer un ou des algorithmes nous permettant d'implémenté notre résolution mathématique "mais comment ?" exemple :
x^M mod ncomprend tu ?" c'est a dire qu'on pourras avoir que des nombres compris entre 0 & n-1" oui "donc on peut par déduction fixé la taille de 'n' "oui et tu était pas loin" mais quel type de variable choisir pour de si grand nombre ?" cela dépendra de la borne max en clair, "n-1" "ça veut dire qu'on peut implémenter RSA en langage C ou C++? " oui."
(GMP pourquoi ?) bref.
Les tutoriels c'est bien mais, vaut mieux ne pas prendre comme argent comptent tout ce qui est écrit. Retourné sur le site du tutoriel mentionné dans les précédents postes vous verrez qu'il utilise une bibliothèque ou un programme déjà écrit pour argumenter le sujet, mais en aucun cas en vous expliqueras comment c'est différentes procédures / algorithme on été implémenté. Beaucoup de novices pourront chiffrer en RSA en suivant le tutoriel c'est le bute recherché , mais que savent ils réellement sur son fantastique algorithme ou les formidables technique mathématique qui ont aboutie à une telle prouesse ? "faut savoir reconnaître et admirer l'élégance mathématique mais aussi de de la physique père de l'électronique". Ils sauront chiffrer et RSA mais ... qu'est-ce qu'ils ont appris où compris, pourront-ils écrire une variante de chiffrement asymétrique d'eux même où ils vont encore à nouveau chercher des tutoriels traitant des variantes de chiffrement asymétrique ?.
En conclusion, commencer par comprendre les algorithmes ensuite implémenté les procédure permettant de réaliser un chiffrement asymétrique RSA.
Puis choisissez un langage procédurale ou fonctionnel qu'un langage orienté objet.
Et au final amuser vous à chiffrer déchiffrer des donnés et pour ceux qui sont vraiment des professionnels amusez-vous à déchiffrer une donnée sans connaître la clé de chiffrement.
Débuter avec Euclide "plus grand diviseur commun cours de quatrième (les PGCD) " ensuite écrire l'algorithme Euclide et sur la base du même algorithme adapté là afin de rechercher deux nombres premiers entre eux et après ça, exploré d'autre horizon exemple mettre très rapidement des nombre en puissance , générer des nombre premier etc. après tout ça vous y verrez plus clair et la difficulté de la "choses".
à bientôt.