• Aucun résultat trouvé

26 for x in t] def decodageCesar(t, d): return [(x + d

N/A
N/A
Protected

Academic year: 2022

Partager "26 for x in t] def decodageCesar(t, d): return [(x + d"

Copied!
2
0
0

Texte intégral

(1)

def metEnForme(chaine):

resu = ''

for c in chaine:

if ord(c) > 96 and ord(c) < 123:

resu += c return resu

def tableau(t):

return [ord(x) - 97 for x in t]

def texte(t):

return ''.join(chr(x + 97) for x in t)

texteEssaiBrut = 'bla, bla, bla'

texteEssai = metEnForme(texteEssaiBrut) texteEssaiNumerique = tableau(texteEssai)

clef = 'clef'

clefNumerique = tableau(clef)

def codageCesar(t, d):

return [(x - d) % 26 for x in t]

def decodageCesar(t, d):

return [(x + d) % 26 for x in t]

def frequences(t1):

resultat = 26*[0]

for x in t1:

resultat[x] += 1 return resultat

def indice_du_maximum(fr):

indice, valeur = 0, fr[0]

for k in range(1, 26):

if fr[k] > valeur:

indice, valeur = k, fr[k]

return indice

def decodageAuto(t1):

indice = indice_du_maximum(frequences(t1)) d = 4 - indice

return decodageCesar(t1, d)

def codageVigenere(t, c):

n, k = len(t), len(c)

return [ (t[j] + c[j % k]) % 26 for j in range(n)]

def pgcd(a, b): # fonctionne pour a, b >= 0 while b > 0:

1

(2)

if b > a:

a, b = b, a a = a - b

return a

def longueurDeLaCle(t):

n, d = len(t), 0

for i in range(n - 5):

for j in range(i + 3, n - 2):

if t[i:i+3] == t[j:j+3]:

d = pgcd(d, j - i) return d

def decodageVigenereAuto(t):

lClef = longueurDeLaCle(t) for j in range(lClef):

sousTableau = t[j::lClef]

decode = decodageAuto(sousTableau) t[j::lClef] = decode

tableauCode = codageVigenere(texteEssaiNumerique, clefNumerique)

decodageVigenereAuto(tableauCode) resultatFinal = texte(tableauCode) print(resultatFinal)

2

Références

Documents relatifs

En tˆ atonnant, on s’aper¸coit que le minimum et le maximum sont forc´ ement les 2 nouvelles valeurs que l’on doit

On se donne les courbes repr´ esentatives de fonction homographique. La fonction est croissante puis croissante donc λ

Écris, en fonction de x , le prix en euros de deux croissants et d'une

La droite représentée en trait pointillé est la représentation graphique d’une fonction affine h.. Pour chacune des affirmations suivantes, dire si elle est vraie, fausse ou si

[r]

Appliquer le 1 er principe de la thermodynamique au système {résistance} puis en déduire la relation entre Q et W el (Q: transfert thermique fourni par la résistance

[r]

[r]