Tres tres grand nombre

Résolu
Signaler
Messages postés
26
Date d'inscription
vendredi 4 août 2006
Statut
Membre
Dernière intervention
30 janvier 2009
-
Messages postés
536
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
22 août 2008
-
bonjour
je voudrai que quelqu'un m'explique comment gérer de tres tres grand nombre pour faire un prog de cryptage rsa et comment on fait la concaténation de nombres et de lettres.Merci

18 réponses

Messages postés
536
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
22 août 2008

ben tout bete !! tu utilise les chaines de caracteres.
avec le c++ tu devrais trouver ton bonheur (nottament les ifstream string).
http://c.developpez.com/faq/cpp/?page=strings

bonne chance ;-)
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 août 2010
10
Le plus simple est d'utilsier une librairie existante (par ex gmp).
Un exemple ici

Par contre je n'ai pas compris ce que tu entends par "concaténation de nombres et de lettres"

_____________________________________
Messages postés
26
Date d'inscription
vendredi 4 août 2006
Statut
Membre
Dernière intervention
30 janvier 2009

1-D'accord! Mais je n'arrive pas à installer gmp(enfin si mais ca marche pas(non je n'ai pas oublié d'editer les liens)) et je voudrai juste savoir comment on fait pour gérer les grands nombres avec les classes

2-Ben je voulai savoir si il y avait un symbole spéciale(que je connais pas car je suis débutant) pour faire que

int a=3,b=5;
int c=0;

c=a ( symbole spécial ) b;

et que c=35 sans avoir besoin de passer par des *10,*100 etc...et je voulais savoir si c'était pareil avec les caracteres.Voila

Mais merci quand meme
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 août 2010
10
1- Quelle est l'erreur?
2- Non il n'y a pas de symbole spécial qui fait ca

_____________________________________
Messages postés
26
Date d'inscription
vendredi 4 août 2006
Statut
Membre
Dernière intervention
30 janvier 2009

Sous dev c++

fichier : C:\...\Makefile.win

message:[Build Error][RSA.exe] Error 1

Justement j'avais déja trouvé cette exemple avant de poser ma question mais ca marchait pas!
Messages postés
26
Date d'inscription
vendredi 4 août 2006
Statut
Membre
Dernière intervention
30 janvier 2009

merci MuPuf


Je suis d'accord pour les caractères (d'ailleurs pourquoi j'ai demandé pour les caractères je suis con...)

Mais pour les nombres?...

Imaginons mon futur prog rsa qui mouline 5 caractères(sécurité minimale),:
 
pour économiser ma mémoire , en sachant qu'un char a 127 valeurs de caractères(http://fr.wikipedia.org/wiki/ASCII), au lieu de faire des *1000^x pour séparer les nombres, je fais des *128^x:

char a='A',b='B',c='C',d='D',e='E';

(type esperé que j'attend comme réponse, ou fonction ou class ou structure)f=a*128^4+b*128^3+c*128^2+d*128+e;

Mais ca tient pas dans mes caractere des base rien que le 'A'=65->65*128^4 (ni dans ma calculette d'ailleurs)

Et ensuite(si vous savez l'algorythme de rsa) il faut faire f^e %n (e est au moins de 3) alors ouille!!!

Donc je voudrai savoir comment faire tenir un (127*128^4) ^2(J'ai inventé une fonction qui ne calcul qu'une puissance à la fois et en faisant le modulo apres la puissance ce qui réduit la demande en mémoire) minimum dans une variable ou une structure ou une classe

La c'est precis

Et comme ca ca sera une occasion d'apprendre comment fait ce gmp!
Messages postés
536
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
22 août 2008

euh, un char c'est sur 8 bits, donc, 2^8=256 valeurs possibles ;-)
Mais j'ai un pote qui avait codé RSA, et il n'avait pas eu besoin de de grand entiers.
Je te rappelle que la clée ne doit pas depasser 128 bits pour des raisons légales.
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Tes sur MuPuf ? il me semble que l'on peut coder avec n'importe quelle clef des que c'est un cadre privé, enfin je suis pas sur.
Messages postés
536
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
22 août 2008

non c'est 128 bits pour tout le monde, à la limite si ça reste sur ton réseaux local ça doit etre toléré, mais sinon,  tu n'as pas droit à plus.
Messages postés
26
Date d'inscription
vendredi 4 août 2006
Statut
Membre
Dernière intervention
30 janvier 2009

J'adapterai la longeur de la clé pour etre dans la légalité!, pour le char(toujours dans la logique de réduire la taille), j'ai vu sur wikipedia que les caracteres en dessous de 0 (char variant de -128 à 127) sont les caractères spéciaux (les accents en font parti mais bon...) donc avec ces 127 possibilités ont a les majuscules, les minuscules la ponctuation classique et les commande du style retour à la ligne , espace...le strict nécessaire!!!
Messages postés
536
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
22 août 2008

hey hey, mais te casse pas la tete a reduire la taille, tu t'en fou, ça représente rien en mémoire ...
Messages postés
26
Date d'inscription
vendredi 4 août 2006
Statut
Membre
Dernière intervention
30 janvier 2009

voici un prog pour vous en rendre compte:

#include <cstdlib>
#include


using namespace std;


int main(int argc, char *argv[])
{char a=-128;
while(a<127){
printf("%c %ld\n",a,a);
a++;}
    system("PAUSE");
    return EXIT_SUCCESS;
}
Messages postés
26
Date d'inscription
vendredi 4 août 2006
Statut
Membre
Dernière intervention
30 janvier 2009

Oui mais le problème au début et d'ailleurs toujours c'est comment gérer la taille(car au début je faisait des test avec 3 caracteres maximum sinon c'etait trop grand et avec des *256*128*128 c'était déja gros!!!!!!!!Quand j'aurai la soluce j'augmenterai les frais!
Messages postés
26
Date d'inscription
vendredi 4 août 2006
Statut
Membre
Dernière intervention
30 janvier 2009

Non désolé je dis des conneries avec un caractères ca fais


caractere*256*256+caractereDeux*256+caractereTrois
Messages postés
536
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
22 août 2008

quand meme des fois bien chiant RSA, ça te fait augmenter méchament la taille de ce que tu encryptes.
Je m'étais fait un systeme de cryptage ultra rapide qui s'amusait avec des paquets. En premier tu lis 5000 octets, tu les inverses, puis tu recommences jusqu'a la fin du fichier. Puis tu prend les paquets et tu changes leurs ordres, aprés tu appliques un cryptage XOR sur l'ensemble, et finalement, c'est assez chaud de retrouver toutes les conneries que tu as faites dessus à moins de faire du reverse engenering, mais bon, au moins ça prend pas plus de place ni de ressources, vus que le processeur ne bossait qu'a 15% et les disques à 100% par contre, enfin bon, c'est qu'une suggestion pour te pencher sur d'autres algos.
Messages postés
26
Date d'inscription
vendredi 4 août 2006
Statut
Membre
Dernière intervention
30 janvier 2009

Oui mais on peut encore se demander comment fait la librairie gmp pour gérer les grands nombres.D'ailleurs j'ai enfin trouvé le bug dans ma compil pour le prog de RSA  que ma indiquer vecchio56.Je ne connais pas  les fonctionnalitées de la gmp mais dans son prog ca manque de technique (on voit pas les clés privés et publiques,il n'y a pas de fichier d'entrée ni de sortie, on ne conserve pas la meme clé...) mais je ne saurai pas faire ca et le programmeur a dit qu'il savait pas comment que l'on faisait . Alors si on pouvait savoir comment fait gmp pour gérer les grands nombres?(j'ai déja essayé d'éplucher le code source  et tt ce que j'ai découvert c'est que ce qui stock le grand nombre c'est une structure avec la taille des membres(?????), leurs nombres(????),et un pointeur(d'apres ma traduction des commentaires))
ALORS JE CHANGE LA DESCRIPTION DE MA QUESTION:
COMMENT FAIT GMP?????!!!!
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 août 2010
10
L'idée c'est de représenter un entier dans un tableau d'entiers (le pointeur doit représenter ca)
gmp ne fait pas exactement comme ca, mais par exemple on pourrait imaginer que le nombre 123 est stocké comme le tableau {1,2,3}
J'ai fait un code de ce genre:
http://www.cppfrance.com/code.aspx?ID=19105

_____________________________________
Messages postés
536
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
22 août 2008

oui je pense qu'il fait comme ça aussi, il recode toutes les opérations ensuite que l'on peut faire dessus.