Cryptographie et algorithmique



Documents pareils
20. Algorithmique & Mathématiques

Limites des Suites numériques

[ édité le 10 juillet 2014 Enoncés 1. Exercice 6 [ ] [correction] Si n est un entier 2, le rationnel H n =

EXERCICES : DÉNOMBREMENT

Les Nombres Parfaits.

Chapitre 3 : Fonctions d une variable réelle (1)

SÉRIES STATISTIQUES À DEUX VARIABLES

Comportement d'une suite

x +1 + ln. Donner la valeur exacte affichée par cet algorithme lorsque l utilisateur entre la valeur n =3.

. (b) Si (u n ) est une suite géométrique de raison q, q 1, on obtient : N N, S N = 1 qn+1. n+1 1 S N = 1 1

1 Mesure et intégrale

Compte Sélect Banque Manuvie Guide du débutant

Dénombrement. Introduction. 1 Cardinaux d'ensembles nis. ECE3 Lycée Carnot. 12 novembre Quelques dénitions

3.1 Différences entre ESX 3.5 et ESXi 3.5 au niveau du réseau. Solution Cette section récapitule les différences entre les deux versions.

LES ÉCLIPSES. Éclipser signifie «cacher». Vus depuis la Terre, deux corps célestes peuvent être éclipsés : la Lune et le Soleil.

Consolidation. C r é e r un nouveau classeur. Créer un groupe de travail. Saisir des données dans un groupe

Dénombrement. Chapitre Enoncés des exercices

Convergences 2/2 - le théorème du point fixe - Page 1 sur 9

Chap. 6 : Les principaux crédits de trésorerie et leur comptabilisation

UNIVERSITE MONTESQUIEU BORDEAUX IV. Année universitaire Semestre 2. Prévisions Financières. Travaux Dirigés - Séances n 4

Exo7. Déterminants. = 4(b + c)(c + a)(a + b). c + a c + b 2c Correction. b + a 2b b + c. Exercice 2 ** X a b c a X c b b c X a c b a X

Séquence 5. La fonction logarithme népérien. Sommaire

Séries réelles ou complexes

STATISTIQUE : TESTS D HYPOTHESES

II LES PROPRIETES DES ESTIMATEURS MCO 1. Rappel : M1 LA REGRESSION : HYPOTHESES ET TESTS Avril 2009

Chap. 6 : Les principaux crédits de trésorerie et leur comptabilisation

Baccalauréat S Asie 19 juin 2014 Corrigé

Sommaire Chapitre 1 - L interface de Windows 7 9

Polynésie Septembre Exercice On peut traiter la question 4 sans avoir traité les questions précédentes.

Chap. 5 : Les intérêts (Les calculs financiers)

Échantillonnage et estimation

Deuxième partie : LES CONTRATS D ASSURANCE VIE CLASSIQUES

55 - EXEMPLES D UTILISATION DU TABLEUR.

Les algorithmes de tri

CHAPITRE 2 SÉRIES ENTIÈRES

FEUILLE D EXERCICES 17 - PROBABILITÉS SUR UN UNIVERS FINI

Télé OPTIK. Plus spectaculaire que jamais.

Groupe orthogonal d'un espace vectoriel euclidien de dimension 2, de dimension 3

Statistiques appliquées à la gestion Cours d analyse de donnés Master 1

* très facile ** facile *** difficulté moyenne **** difficile ***** très difficile I : Incontournable

14 Chapitre 14. Théorème du point fixe

PROBLEMES DIOPTIMISATION EN NOMBRES ENTIERS J. L. NICOLAS

Mécanismes de protection contre les vers

Module 3 : Inversion de matrices

Neolane Message Center. Neolane v6.0

Etude Spéciale SCORING : UN GRAND PAS EN AVANT POUR LE MICROCRÉDIT?

Etude de la fonction ζ de Riemann

La France, à l écoute des entreprises innovantes, propose le meilleur crédit d impôt recherche d Europe

Processus et martingales en temps continu

Logiciel de synchronisation de flotte de baladeurs MP3 / MP4 ou tablettes Androïd

Simulations interactives de convertisseurs en électronique de puissance

POLITIQUE ECONOMIQUE ET DEVELOPPEMENT

Intégration et probabilités ENS Paris, TD (20)13 Lois des grands nombres, théorème central limite. Corrigé :

Neolane Leads. Neolane v6.0

Terminale S. Terminale S 1 F. Laroche

Exercice I ( non spé ) 1/ u 1 = u / Soit P la propriété : u n + 4. > 0 pour n 1. P est vraie au rang 1 car u 1

LE WMS EXPERT DE LA SUPPLY CHAIN DE DÉTAIL

2 ième partie : MATHÉMATIQUES FINANCIÈRES

// Trouver l'identifiant /dev/sdx voulu (clé USB, carte SD, disque dur, etc.) blkid // Pour le reste du document on considère l'identifiant "/dev/sdb"

LES MESURES CLÉS DU PROJET DE LOI ÉCONOMIE SOCIALE ET SOLIDAIRE

Guide des logiciels de l ordinateur HP Media Center

Manuel d initiation à l ordinateur HP Media Center

Dares Analyses. Plus d un tiers des CDI sont rompus avant un an

Statistique descriptive bidimensionnelle

Les nouveaux relevés de compte

Le chef d entreprise développe les services funéraires de l entreprise, en

Copyright Hewlett-Packard Development Company, L.P.

capital en fin d'année 1 C 0 + T C 0 = C 0 (1 + T) = C 0 r en posant r = 1 + T 2 C 0 r + C 0 r T = C 0 r (1 + T) = C 0 r 2 3 C 0 r 3...

Choisissez la bonne carte. Contribuez au respect de la nature avec les cartes Visa et MasterCard WWF. Sans frais supplémentaires.

MESURE DE L'INFORMATION

GUIDE METHODOLOGIQUE INDUSTRIES, OUVREZ VOS PORTES

Probabilités et statistique pour le CAPES

Examen final pour Conseiller financier / conseillère financière avec brevet fédéral. Recueil de formules. Auteur: Iwan Brot

RECHERCHE DE CLIENTS simplifiée

UNIVERSITÉ DE SFAX École Supérieure de Commerce

c. Calcul pour une évolution d une proportion entre deux années non consécutives

S-PENSION. Constituez-vous un capital retraite complémentaire pour demain tout en bénéficiant d avantages fiscaux dès aujourd hui.

Guide d'exploitation. Neolane v6.0

TARIFS BANCAIRES. Opérations bancaires avec l étranger Extrait des conditions bancaires au 1 er juillet Opérations à destination de l étranger

Donnez de la liberté à vos données. BiBOARD.

Cours de Statistiques inférentielles

Université Victor Segalen Bordeaux 2 Institut de Santé Publique, d Épidémiologie et de Développement (ISPED) Campus Numérique SEME

n tr tr tr tr tr tr tr tr tr tr n tr tr tr Nom:... Prénom :...

Manuel d'utilisation

Un nouvel opérateur de fusion adaptatif. A new adaptive operator of fusion. 1. introduction

Les études. Recommandations applicables aux appareils de levage "anciens" dans les ports. Guide Technique

La fibre optique arrive chez vous Devenez acteur de la révolution numérique

Réseaux d ondelettes et réseaux de neurones pour la modélisation statique et dynamique de processus

One Office Voice Pack Vos appels fixes et mobiles en un seul pack

Suites et séries de fonctions

STATISTIQUE AVANCÉE : MÉTHODES

Sécurité de l'information

Le marché du café peut être segmenté en fonction de deux modes de production principaux : la torréfaction et la fabrication de café soluble.

COMMENT ÇA MARCHE GUIDE DE L ENSEIGNANT 9 E ANNÉE

TRANSFERT DE CHARGE DANS UN RÉSEAU DE PROCESSEURS TOTALEMENT CONNECTÉS (*) par Maryse BÉGUIN ( 1 )

Divorce et séparation

Exercices de mathématiques

Principes et Méthodes Statistiques

Statistique Numérique et Analyse des Données

Un accès direct à vos comptes 24h/24 VOTRE NUMÉRO CLIENT. Centre de Relations Clients (0,12 /min)

Transcription:

F.Gaudo 1 er ovembre 2010 Table des matières 1 Avat de commecer 2 2 Préformattage d'u texte pour aalyse 3 2.1 Élimiatio de la poctuatio et des espaces das u texte................. 3 2.2 Formatage du texte e lettres miuscules........................... 5 3 Aalyse de fréqueces 6 3.1 Aalyse de fréqueces d'ue lettre de l'alphabet....................... 6 3.2 Aalyse de fréquece de l'esemble des lettres de l'alphabet................ 7 4 Substitutio d'ue lettre par ue autre 9 5 Codage ae 10 6 Codage par la méthode de Vigeère 12 7 Algorithme RSA 13 7.1 Géératio des clés publiques et privées............................ 13 7.2 Codage.............................................. 14 7.3 Décodage............................................ 15 1

1 Avat de commecer Ce documet cotiet ue liste d'algorithmes e rapport avec la cryptographie pour le lycée et les programmes correspodats. La cryptographie abordée ici porte essetiellemet sur les méthodes de chiremet de textes par substitutio (codage de César, Vigeère) à l'exceptio otable de l'algorithme RSA. Le lagage de programatio Pytho a été choisi car il est cosidéré par les développeurs professioels comme l'u des plus appropriés pour l'appretissage de la programmatio. Le lagage de programmatio du logiciel XCas a été choisi pour sa structure fracisée et éamois très proche de celle des lagages de programmatio usuels (Pytho, C etre autres), ce qui e fait u logiciel particulièremet adapté à u public fracophoe. Ce documet suppose ue coaissace des istructios fodametales (etrées, sorties, boucles, coditios) du lagage Pytho aisi que de celles du logiciel XCas. Il 'est fait usage das les programmes que de otios pouvat être abordées au iveau du lycée das le cadre de l'appretissage de l'algorithmique. E particulier, il 'est pas fait usage de la otio de foctio (iformatique...). Pour le lagage Pytho, a d'utiliser des caractères accetués das les programmes, o 'oubliera pas de préciser l'ecodage de caractères utilisé e plaçat au début de chaque programme la lige suivate sous Widows #-*- codig:lati-1 -*- et sous Liux ubutu #-*- codig:utf-8 -*- http: // mathsfg. et. free. fr 2

2 Préformattage d'u texte pour aalyse 2.1 Élimiatio de la poctuatio et des espaces das u texte Etrées : texte : chaîe de caractère. Début traitemet bcar pred la valeur de logueur(texte) ; alphabet="abcdefghijklmopqrstuvwxyz" ; texteformate pred la valeur ; pour k allat de 1 à bcar faire j pred la valeur 0 ; trouve pred la valeur 0 ; tat que j<logeur(alphabet) et trouve = 0 faire si texte[k] = alphabet[j] alors trouve = 1 ; si trouve = 0 alors j pred la valeur de j + 1 ; si trouve = 1 alors texteformate = texteformate + texte[k] ; Fi Sorties : textef ormate http: // mathsfg. et. free. fr 3

Programmes correspodats : XCas : texte:="ceci 'est qu'u exemple."; alphabet:="abcdefghijklmmopqrstuvwxyz......abcdefghijklmnopqrstuvwxyz"; bcar:=legth(texte); afficher("texte : "+texte); afficher("nombre de caractères :"+bcar); texteformate:=""; pour k de 0 jusque bcar-1 faire j:=0; trouve:=0; tatque (j<legth(alphabet)) et......(trouve==0) faire si texte[k]==alphabet[j] alors trouve:=1; fsi; si trouve==0 alors j:=j+1;fsi; ftatque; si trouve==1 alors texteformate:=texteformate+texte[k]; fsi; afficher(texteformate); Pytho : texte="ceci 'est qu'u exemple" alphabet="abcdefghijklmopqrstuvwxyz......abcdefghijklmnopqrstuvwxyz" bcar=le(texte) prit "Texte : ",texte prit "Nombre de caractères :",bcar texteformate="" for k i rage(bcar): j=0 trouve=0 while (j<le(alphabet))......ad (trouve==0): if texte[k]==alphabet[j]: trouve=1 if trouve==0: j=j+1 if trouve==1: texteformate=texteformate+texte[k] prit texteformate Remarques : Les... apparaissat ci-dessus e doivet pas apparaître das les programmes, ils sigalet juste que les deux liges e doivet e faire qu'ue. Le texte à traiter est ici etré sous forme d'ue chaîe de caractère. E cas de log texte à traiter. E pytho, o pourra le stocker das u chier à part et utiliser les istructios suivates : fichier=ope('icivotreomdefichier.txt','r') texte=fichier.read() fichier.close() http: // mathsfg. et. free. fr 4

2.2 Formatage du texte e lettres miuscules L'algorithme suivat met u texte préalablemet débarassé de tout sige de poctuatio e lettres miuscules. Etrées : texte : chaîe de caractère. Début traitemet bcar pred la valeur de logueur(texte) ; texteformate pred la valeur ; pour k allat de 1 à bcar faire si ord(texte[k])<97 alors textef ormate=textef ormate+chr(ord(texte[k])+32) ; sio texteformate pred la valeur de texteformate + texte[k] ; Fi Sorties : textef ormate Programmes correspodats : XCas : texte:="ceciestquunexemple"; bcar:=legth(texte); afficher("texte : "+texte); afficher("nombre de caractères :"+bcar); texteformate:=""; pour k de 0 jusque bcar-1 faire si ord(texte[k])<97 alors texteformate:=texteformate+......char(ord(texte[k])+32) else texteformate:=texteformate+texte[k]; fsi; afficher(texteformate); Pytho : texte="ceciestquunexemple" bcar=le(texte) prit "Texte : ",texte prit "Nombre de caractères :",bcar texteformate="" for k i rage(bcar): if ord(texte[k])<97: texteformate=texteformate+......chr(ord(texte[k])+32) else: texteformate=texteformate+texte[k] prit texteformate http: // mathsfg. et. free. fr 5

3 Aalyse de fréqueces L'aalyse de fréqueces d'u texte permet, lorsque l'o a simplemet remplacé ue lettre d'u texte par ue autre (méthode de substitutio simple), de recoaître les lettres les plus fréquetes du texte, le "e" e fraçais par exemple. 3.1 Aalyse de fréqueces d'ue lettre de l'alphabet L'algorithme suivat ache la fréquece d'apparitio de la lettre demadée par l'utilisateur das u texte préalablemet formatté (caractères mis e miuscules, espaces et siges de poctuatio supprimés) doé : Etrées : lettre : caractère ; texte : chaîe de caractère. Début traitemet bcar pred la valeur de logueur(texte) ; compteur pred la valeur 0 ; pour k allat de 1 à bcar faire si texte[k] = lettre alors compteur pred la valeur de compteur+1 ; freq pred la valeur compteur bcar Fi Sorties : freq Programmes correspodats : XCas : texte:="ceciestquuexemple"; bcar:=legth(texte); afficher("texte : "+texte); afficher("nombre de caractères :"+bcar); saisir(lettre); compteur:=0; pour k de 0 jusque bcar-1 faire si texte[k]==lettre alors compteur:=compteur+1;fsi; freq:=approx(compteur/bcar); afficher("fréquece :"+freq); Pytho : texte="ceciestquuexemple" bcar=le(texte) prit "Texte : ",texte prit "Nombre de caractères :",bcar lettre=raw_iput("lettre : ") compteur=0.0 for k i rage(bcar): if texte[k]==lettre: compteur=compteur+1 freq=compteur/bcar prit "Fréquece :",freq Remarque : Pour le programme sous XCAS, o etrera la lettre voulue etre parethèses a que le logiciel traite la lettre etrée comme u caractère. http: // mathsfg. et. free. fr 6

3.2 Aalyse de fréquece de l'esemble des lettres de l'alphabet Même problème que le précédet mais o ajoute ue boucle pour calculer la fréquece de chacue des lettres de l'alphabet. Etrées : texte : chaîe de caractères. Début traitemet bcar pred la valeur de logueur(texte) ; alpahbet pred la valeur "abcdefghijklmopqrstuvwxyz" pour j allat de 1 à 26 faire compteur pred la valeur 0 ; pour k allat de 1 à bcar faire si texte[k] = alphabet[j] alors compteur pred la valeur de compteur+1 ; freq pred la valeur compteur bcar Acher freq Fi http: // mathsfg. et. free. fr 7

Programmes correspodats : XCas : texte:="ceciestquuexemple"; bcar:=legth(texte); afficher("texte : "+texte); afficher("nombre de caractères :"+bcar); alphabet:="abcdefghijklmopqrstuvwxyz"; pour j de 0 jusque 25 faire compteur:=0; pour k de 0 jusque bcar-1 faire si texte[k]==alphabet[j] alors compteur:=compteur+1;fsi; freq:=approx(compteur/bcar); afficher(alphabet[j]+" : "+freq); Pytho : texte="ceciestquuexemple" bcar=le(texte) prit "Texte : ",texte prit "Nombre de caractères :",bcar alphabet="abcdefghijklmopqrstuvwxyz" for lettre i alphabet: compteur=0.0 for k i rage(bcar): if texte[k]==lettre: compteur=compteur+1 freq=compteur/bcar prit lettre," : ",freq Remarque : Das le programme pour Xcas, j est l'idice de la lettre das l'alphabet. O aurait pu procéder de même e lagage Pytho mais celui-ci permet aussi d'utiliser la variable lettre comme u caractère de l'alphabet ce qui est plus pratique. http: // mathsfg. et. free. fr 8

4 Substitutio d'ue lettre par ue autre L'algorithme suivat est à la base des méthodes de substitutio simple : il substitue ue lettre doée par ue autre lettre doée das u texte doé. Etrées : lettre1, lettre2 : caractères ; texte : chaîe de caractère. Début traitemet bcar pred la valeur de logueur(texte) ; pour k allat de 1 à bcar faire si texte[k] = lettre1 alors texte[k] = lettre2 ; Fi Sorties : texte Programmes correspodats : XCas : texte:="abcdefgh"; bcar:=legth(texte); afficher(texte); saisir("lettre à substituer : ",lettre1); saisir("lettre de substitutio:",lettre2); pour k de 0 jusque bcar-1 faire si texte[k]==lettre1 alors texte[k]:=lettre2;fsi; afficher(texte); Pytho : texte="abcdefgh" lettre1=raw_iput("lettre à substituer :") lettre2=raw_iput("lettre de substitutio:") bcar=le(texte) prit "Texte à coder : "+texte textecode="" for k i rage(bcar): if texte[k]==lettre1: textecode=textecode+lettre2 else: textecode=textecode+texte[k] prit "Texte codé : "+textecode Remarques : Das le programme sous Pytho, o a utilisé ue deuxième chaîe de caractères "textecode" car l'istructio lettre[k]=lettre2 'est pas acceptée et provoque ue erreur. O aurait cepedat pu utilisé l'istructio texte=texte.replace(lettre1,lettre2) par cotre à la place de l'esemble de la boucle for. Das le programme XCas, etrer les lettres etre guillemets a qu'elles soiet recoues comme du texte. http: // mathsfg. et. free. fr 9

5 Codage ae L'algorithme suivat est u exemple de chire de substitutio : il chire u texte préformatté e utilisat u cryptage ae doé par la foctio f mx + p où m et p sot etrés par l'utilisateur. Attetio, selo les valeurs choisis de m et p, o obtiet u cryptage qui 'est pas écessairemet ecace : e eet, pour certaies valeurs de m et p, deux lettres diéretes du texte o codé peuvet doer ue même lettre das le texte codé ce qui e permet pas par la suite de retrouver le message origial. O peut d'ailleurs motrer que cela arrive si et seulemet si la foctio ae utilisée est telle que m 'est pas premier avec 26. La programmatio de cet algorithme écessite l'utilisatio de ce que l'o appelle les codes ASCII. E eet, e iformatique, chaque caractère imprimable est représeté par u ombre etier. E particulier, les lettres miuscules sot représetées par les ombres allat de 97 (code ASCII de "a") à 122 (code ASCII de "b"). Etrées : texte : chaîe de caractère ; m, p : ombres. Début traitemet bcar pred la valeur de logueur(texte) ; textecode pred la valeur "" ; pour k allat de 1 à bcar faire u pred la valeur ASCII de texte[k] otée de 97 ; v pred la valeur de m u + p ; w pred la valeur du reste de la divisio euclidiee de v par 26 ; t pred la valeur du caractère de code ASCII w + 97 ; textecode[k] pred la valeur de t. Fi Sorties : textecode Programmes correspodats : XCas : texte:="abcdefgh"; saisir("m : ",m); saisir("p : ",p); afficher("texte : "+texte); f(x):=m*x+p; textecode:=""; pour k de 0 jusque legth(texte)-1 faire u:=ord(texte[k])-97; v:=f(u); w:=irem(v,26); t:=char(97+w); textecode:=textecode+t; afficher("texte codé : "+textecode); Pytho : texte="ceciestquuexemple" m=iput("m : ") p=iput("p : ") prit "Texte : ",texte textecode="" bcar=le(texte) for k i rage(bcar): u=ord(texte[k])-97 v=2*u-3 w=v%26 t=chr(97+w) textecode=textecode+t prit "Texte codé :",textecode http: // mathsfg. et. free. fr 10

Remarque : Le codage dit de César qui cosiste à décaler les lettres d'u certai ombre de rags est u cas particulier de codage ae : il cosiste à predre m = 1 et m égal au ombre de rags de décalage. http: // mathsfg. et. free. fr 11

6 Codage par la méthode de Vigeère Les programmes suivats implémetet la méthode de codage de Vigeère qui utilise u mot clef idiquat le codage par la méthode de César à utiliser pour chacue des lettres du texte. Programmes correspodats : XCas : texte:="ceciestquuexemple"; bcar:=legth(texte); saisir("clef ",clef); cleftexte:=strig(clef); logclef:=legth(cleftexte); afficher("texte à coder : "+texte); textecode:=""; pour k de 0 jusque bcar-1 faire j:=irem(k,logclef); cark:=cleftexte[j]; decalage:=ord(cark)-97; textecode:=textecode+......char(irem(ord(texte[k])......-97+decalage,26)+97); afficher("texte codé : "+textecode); Pytho : texte="ceciestquuexemple" clef=raw_iput("clef de codage : ") logclef=le(clef) bcar=le(texte) prit "Texte à coder",texte textecode="" for k i rage(bcar): bcar=le(texte) j=k%logclef cark=clef[j] decalage=ord(cark)-97 textecode=textecode+......chr((ord(texte[k])-97+decalage)%26+97) prit "Texte codé : ",textecode http: // mathsfg. et. free. fr 12

7 Algorithme RSA Les programmes suivats, écrits pour XCas, implémetet l'algorithme de chiremet RSA (Rivest, Shamir, Adlema). Pour des précisios théoriques sur l'algorithme, o pourra se reporter à la littérature abodate déjà existate, e particulier l'aide du logiciel XCas das laquelle gure ue autre implémetatio de cet algorithme. Rappelos que cet algorithme utilise ue clé publique (u, ) écessaire au chiremet d'u message, et ue clé privé (m, ) écessaire au déchiremet, état le produit de deux grads (voire très grads ) ombres premiers p et q teus secrets. La diculté de la factoristatio e ombres premiers garatie aisi la robustesse de l'algorithme face aux tetatives de déchiremet. Les caractères du message sot préalablemet trasformés e liste de codes ASCII correspodats puis chirés par blocs de plusieurs ombres (pour mettre e échec les tetatives de déchiremet par aalyse de fréqueces). O a d'ailleurs fait gurer das le programme suivat la possibilité de choisir le ombre j de caractères regroupés das u même bloc. 7.1 Géératio des clés publiques et privées // Recherche de p et q premiers saisir(p1); p:=extprime(p1); saisir(q1); q:=extprime(q1); :=p*q; // Détermiatio de m et u m:=extprime(max((p-1)/2,(q-1)/2)); tatque ((gcd(m,p)!=1) et (gcd(m,q)!=1)) faire m:=extprime(m); ftatque; phi=(p-1)*(q-1); u:=bezout_etiers(m,phi)[1]; tatque (u<0) faire u:=u+phi;ftatque; afficher("clé publique : u = "+u+", = "+); afficher("clé privée : m = "+m+", = "+); // Recherche de la puissace j la plus grade telle que 26^j<mi(p,q) // pour les regroupemets e blocs de j ombres. j:=0; tatque (26^j<mi(p,q)) faire j:=j+1;ftatque; j:=j-1; afficher("codage par blocs de "+j+" ombre(s) maximum"); http: // mathsfg. et. free. fr 13

7.2 Codage Codage par l'algorithme RSA : // Trasformatio du texte e liste de ombres. texte:="ceciestquuexemple"; listeombres:=[]; bcar:=legth(texte); pour k de 0 jusque bcar-1 faire listeombres[k]:=ord(texte[k])-97; afficher(listeombres); // Codage par bloc avec la clef publique saisir(u); saisir(); saisir(j); ombreblocs:=itdiv(legth(listeombres),j)+1; k:=0; listecode:=[]; tatque (k<ombreblocs) faire ombre:=0; l:=0; tatque (l<j) et (j*k+l<bcar) faire ombre:=ombre*100+listeombres[j*k+l]; l:=l+1; ftatque; ombrecode:=irem(ombre^u,); listecode[k]:=ombrecode; k:=k+1; ftatque; afficher(listecode); Exemple : O pourra essayer la procédure de codage avec = 152415790094497781 et u = 115769854373006801 aisi que des blocs de j = 5. O obtiet la liste [55435493333260223, 70666835290124841, 102960777055406018, 5126508880992947] qu'il est iutile de trasformer sous forme de caractères. Remarque : Das l'exemple précédet, XCas trouve la factorisatio de e p q avec p = 123456791 et q = 1234567891 istataémet avec la commade idivis() mais e pratique o pred des valeurs de bie plus grades (de l'ordre de quelques cetaies de chires...). http: // mathsfg. et. free. fr 14

7.3 Décodage Décodage e utilisat l'algorithme RSA : saisir(m); saisir(); saisir(listecode); ombreblocs:=ops(listecode); textedecode:=""; afficher(ombreblocs); pour t de 0 jusque ombreblocs-1 faire ombredecode:=powmod(listecode[t],m,); s:=0; textedecodebloc:=""; taille:=legth(strig(ombredecode)); si irem(taille,2)==0 alors smax:=itdiv(taille,2) sio smax:=itdiv(taille,2)+1;fsi; tatque (s<smax) faire ombrecar:=irem(ombredecode,100); textedecodebloc:=textedecodebloc+char(ombrecar+97); ombredecode:=iquo(ombredecode,100); s:=s+1; ftatque; textedecodebloc2:=""; pour y de 1 jusque legth(textedecodebloc) faire textedecodebloc2:=textedecodebloc2+textedecodebloc[legth(textedecodebloc)-y]; textedecode:=textedecode+textedecodebloc2; afficher(textedecode); Exemple : O pourra décoder la liste de codes obteue ci-dessus e utilisat la clef privée doée par = 152415790094497781 et m = 12345701 correspodate à la clef publique utilisée das l'exemple précédet. http: // mathsfg. et. free. fr 15