Décodage fonction affine
ber3n1c3
-
ber3n1c3 -
ber3n1c3 -
Bonjour,
j'ai un projet isn consistant en créer deux programmes afin de codage et décodage avec une fonction affine. Le codage est okay, cependant le décodage est impossible: j'ai un programme, mais il ne fonctionne pas. Si quelqu'un pouvait jeter un coup d'oeil au programme et voir si il y voit une erreur, ce serait super.
merci d'avance
j'ai un projet isn consistant en créer deux programmes afin de codage et décodage avec une fonction affine. Le codage est okay, cependant le décodage est impossible: j'ai un programme, mais il ne fonctionne pas. Si quelqu'un pouvait jeter un coup d'oeil au programme et voir si il y voit une erreur, ce serait super.
merci d'avance
def Modulo(a):
for c in range(0,25):
R=a*c
if R==1%26:
return c
def FonctionAffineDécodage (a,b,m):
n=''
c=Modulo(a)
for i in range (0,len(m)):
if ord(m[i])!=32:
N=ord(m[i])-65
x=c*(N-b)
L=x+65
n=n+chr(L)
else:
n=n+m[i]
return n
a=int(input('variable a ='))
b=int(input('variable b ='))
m=str(input('le message à décoder est ='))
print('le message décodé est ',FonctionAffineDécodage(a,b,m))
A voir également:
- Décodage fonction affine
- Fonction si et - Guide
- Decodage téléphone android - Guide
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
- Fonction remplacer sur word - Guide
voila mon programme de codage ;) merci
d'accord j'y ferai plus attention
Codage → c(x,a,b) ≡ a.x+b [26]
Décodage → d(y,a,b) ≡ (y-b).a⁻¹ [26]
Alors je ne connais pas Python, mais je pense que R==1%26 est incorrect.
Il faudrait plutôt écrire R%26==1
Remarque : si b peut-être quelconque (entre 1 et 26) par contre il faut choisir a correctement, car pour que ça fonctionne on doit avoir pgcd(a, 26) = 1
C'est à dire a ∈ { 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, 25 }
Ce qui donne les couples (a, a⁻¹) = { (1,1), (3, 9), (5, 21), (7, 15), (11, 19), (25, 25) }
Remarque : perso j'étendrais le cas de l'espace if ord(m[i]) != 32 à tout les autres caractères que A-Z puisque ce sont les seuls qui peuvent être (dé)codés.
et même lorsque je change de variable, que je mets int, il ne l'enlève pas et je ne vois vraiment pas pourquoi.
c'est une très bonne idée d'appliquer à tous les caractères, je vais peut être vous la piquez ;)
merci beaucoup pour ce que vous avez déjà fait et que vous avez pris sur votre temps pour répondre