Voila, vu que le prof ne nous aide pas, j'espere que vous pourrez m'aider ici...
je vous énonce les énoncés des problemes:
exo 1
a)ecrire une procédure qui transforme une lettre en un nombre binaire avec la conversion suivante: blanc->0, a->1, b->10,c->11 etc..
b)ecrire une procédure"conversion(chaine)" qui prend en entrée une chaine de caracteres contenant des blancs et des lettres de a à z et qui retourne un nombre binaire par la concaténation des conversions de la question précédente.Par exemple: bcb->100001100010
c)ecrire une procedure "conversinInverse" telle que conversionInverse(conversion(x))=x pour toute chaine x
exo2
a)ecrire une procedure clePrivee(n) qui renvoie (p,q,r) où p,q sont 2 entiers premiers à n chiffres et r un entier à n chiffres premiers à (p-1)(q-1)
b)ecrire une procedure codageRSA(m,n,r) qui prend en entree une chaine m,2entiers n et r et qui renvoie l'encryption du message m par l'algorithme RSA(cad utiliser la fonction conversion et le passage à la puissance r dans Z/nZ)
c) ecrire une procedure decodageRSA(c,p,q,r) qui prend en entree un message crypté c,les facteurs p,q de la clé RSA, et l'exposant r ayant servi au codage et qui renvoie le message en clair(cad decodageRSA(codageRSA(m,pq,r),p,q,r)=m)
d) verifier sur quelques exemples que codage et decodage sont bien inverses l'un de l'autre
Voila, merci de me répondre, l'exam que je vais avoir porte essentiellement sur ces types de procedure, et vu que je vois pas du TOUT comment faire, ce serait sympa de m'aider...
Mélanie
édit Océane : forum modifié
Voila, vu que le prof ne nous aide pas, j'espere que vous pourrez m'aider ici...
je vous énonce les énoncés des problemes:
exo 1
a)ecrire une procédure qui transforme une lettre en un nombre binaire avec la conversion suivante: blanc->0, a->1, b->10,c->11 etc..
b)ecrire une procédure"conversion(chaine)" qui prend en entrée une chaine de caracteres contenant des blancs et des lettres de a à z et qui retourne un nombre binaire par la concaténation des conversions de la question précédente.Par exemple: bcb->100001100010
c)ecrire une procedure "conversinInverse" telle que conversionInverse(conversion(x))=x pour toute chaine x
exo2
a)ecrire une procedure clePrivee(n) qui renvoie (p,q,r) où p,q sont 2 entiers premiers à n chiffres et r un entier à n chiffres premiers à (p-1)(q-1)
b)ecrire une procedure codageRSA(m,n,r) qui prend en entree une chaine m,2entiers n et r et qui renvoie l'encryption du message m par l'algorithme RSA(cad utiliser la fonction conversion et le passage à la puissance r dans Z/nZ)
c) ecrire une procedure decodageRSA(c,p,q,r) qui prend en entree un message crypté c,les facteurs p,q de la clé RSA, et l'exposant r ayant servi au codage et qui renvoie le message en clair(cad decodageRSA(codageRSA(m,pq,r),p,q,r)=m)
d) verifier sur quelques exemples que codage et decodage sont bien inverses l'un de l'autre
Voila, merci de me répondre, l'exam que je vais avoir porte essentiellement sur ces types de procedure, et vu que je vois pas du TOUT comment faire, ce serait sympa de m'aider...
Mélanie
*** message déplacé ***
édit Océane : merci de ne pas poster ton exercice dans des topics différents, les rappels sont pourtant bien visibles.
En postant un petit message dans ton topic, il remonte automatiquement parmi les premiers.
Salut,
Le problème est curieux à plusieurs points de vue. Je conçois relativement bien qu'on puisse envisager des conversions :
"chaine de caractères" <--> "liste d'entier"
Mais je ne vois pas ce que vient faire ici la notion "d'entier binaire". Le binaire est simplement un format pour écrire les entiers. Il n'y a pas de "variable binaire" dans maple (ce qui ne veut d'ailleurs rien dire). L'écriture binaire est un format d'écriture ...
Mais si c'est indispensable il y a toujours la commande convert de maple qui s'utilise ici de la manière suivante :
convert(n,binary)
et renvoie l'entier n sous forme binaire
Pour le premier exercice (j'ai utilisé une terminologie anglophone...préférable en programmation car sans accent...) :
with(StringTools):
# bibliotheque utile pour les fonctions Ord(c) et Char(n) qui permettent de passer d'un entier à un caractère
char_to_integer := proc(c) description "conversion of a character into a binary integer":
if c = " " then return 0:
else return convert((Ord(c) - 96),binary): fi:
end proc:
integer_to_char := proc(n) description "conversion of a binary integer to a character":
if n = 0 then return " ":
else return Char(convert(n,decimal,binary)+96): fi:
end proc:
str_to_list := proc(x) description "conversion from a string to a list":
local i,l:
l := [];
for i in x do
l := [op(l),char_to_integer(i)]:
od:
return l:
end proc:
list_to_str := proc(l) description "conversion from a list to a string":
local i,x:
x := "":
for i in l do
x := cat(x,integer_to_char(i)):
od:
return x:
end proc:
j'ai mapleV release4
je tape ca:
char_to_integer := proc(c)
if c = " " then return(0)
else return(convert((Ord(c) - 96),binary)) fi;
end
integer_to_char := proc(n)
if n = 0 then return(" ")
else return(Char(convert(n,decimal,binary)+96)) fi;
end
str_to_list := proc(x)
local i,l;
l := [];
for i in x do
l := [op(l),char_to_integer(i)];
od;
return(l);
end
list_to_str := proc(l)
local i,x;
x := "";
for i in l do
x := cat(x,integer_to_char(i));
od;
return(x);
end
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :