grandes chaines de caractères [Pascal][cryptage] - Delphi/Pascal - Programmation
Marsh Posté le 10-04-2004 à 22:13:57
si tu trouves comment faire du
20^p avec p :entier à 100 chiffre et récupérer TOUS les chiffres significatifs sans le moindre arrondi, d'accord, mais à ma connaissance, le plus grand entier pouvant etre stocké est de type int64, çàd seulement 20 chiffres.
Marsh Posté le 10-04-2004 à 22:16:41
BiLLKiLL a écrit : si tu trouves comment faire du |
D'où l'intérêt de regrouper plusieurs entiers dans un tableau pour en former un plus grand
Marsh Posté le 10-04-2004 à 22:24:53
oui mais je dois pouvoir faire des calculs dessus, (puissance, multiplication, ect...) et avec des tableaux d'entiers, je vois pas bien comment faire...
Marsh Posté le 10-04-2004 à 22:44:43
BiLLKiLL a écrit : oui mais je dois pouvoir faire des calculs dessus, (puissance, multiplication, ect...) et avec des tableaux d'entiers, je vois pas bien comment faire... |
Tu effectue les calculs sur chaque entier du tableau, en oubliant pas de faire remonter les retenues. En plus, ce sont des entiers non signés donc tu n'aura pas de problèmes de ce côté là.
Tu peux faire de la strength reduction ("réduction de force" je ne connais pas la bonne traduction française). Par exemple, pour faire une multiplication, tu fais un décalage vers la gauche (vers le poids fort) + une addition.
C'est une solution relativement efficace, mais peut-être un peu complexe à mettre en oeuvre.
J'espère que d'autres que moi vont te répondre et t'apporter une meilleure solution
EDIT : je ne connais pas du tout le Pascal, et je ne sais pas si c'est aussi simple à implémenter qu'en C.
Marsh Posté le 10-04-2004 à 22:47:32
c'est ce que j'ai fai mais avec des chaines de caractère, (je prends les caractères un par un et les tansforme en entier, puis je fais l'opération comme sur papier, et je mets le résultat dans un tableau en décalant) parceque avec les entiers, je me suis dis que ce serai galère de passer d'une ligne à la suivante/précédente.
je sais que certaines bibliothèques gérant le RSA en pascal marchent avec des chaines de caractères. je voudrais juste savoir comment utiliser des grandes chaines de caractères, mes fonctions de calculs sont déjà en place et marchent très bien, c'est juste que je dépasse les 255 chiffres...
Marsh Posté le 11-04-2004 à 12:19:20
BiLLKiLL a écrit : |
string n'est pas un type mais un mot clé (c'est pour ça qu'il apparaît en gras et qu'on l'écrit tout en minuscule) qui redirige vers ShortString ou AnsiString/LongString selon le cas.
BiLLKiLL a écrit : |
string1 accepte sans problème les 2^31-1 caractères vu que par défaut string = AnsiString, mais la chaîne tapée entre ' ' dans le code est d'office une ShortString.
On ne peut pas le modifier, donc tu dois faire ta chaîne comme ceci :
string1 := '321232145148915' + '...250782446';
(par paquets de 255 caractères max)
Marsh Posté le 10-04-2004 à 19:35:09
Bonjour à tous,
je suis en 1ere année d'info, je fais du pascal sous delphi 7.
je dois faire un programme de cryptage RSA. Pour cela, je dois générer des nombres premiers à 100chiffres et effectuer des opérations dessus.
Comme les types integer ne sont pas assez grands, que les types réels arrondissent trop pour faire des calculs précis, j'ai choisi d'utiliser des chaines de caractères.
j'ai donc écri des fonctions qui permettent d'additionner, soustraire, diviser, multiplier des chaines de caractères constituées de chiffres.
seulement lors de mes calculs, il m'arrive de dépasser les 255caractères autorisés par le type String.
je sais qu'il existe un type AnsiString d'environ 2^30 caractères (ça devrait suffire lol) mais je n'arrive pas à l'utiliser. en effet, si je fais
et bien cela plante. Comment puis-je faire ?
Merci beaucoup
Message édité par BiLLKiLL le 10-04-2004 à 19:35:36