La fonction encode permet de coder/décoder un message t avec un code César de clé c. La fonction analyse procède à une analyse des fréquences de chaque lettre de l’alphabet dans le message t; elle renvoie la liste des lettres dans l’ordre des fréquences décroissantes. On peut ainsi afficher le message décodé selon la clé qui s’en déduit pour les principales hypothèses concernant le codage du E.
def encode(t,c): tt='' for lettre in t : lettre=lettre.upper() if 64<ord(lettre)<91: tt+=chr((ord(lettre)-65-c)%26+65) if 47<ord(lettre)<58: tt+=chr((ord(lettre)-48-c)%10+48) for e in range(len(tt)-len(tt)%5,0,-5): tt=tt[:e]+' '+tt[e+1:] return tt def analyse(t): alpha,beta=26*[0],26*[0] for lettre in t : if 64<ord(lettre)<91: alpha[ord(lettre)-65]+=1 #print('alpha',alpha) val=[] for e in alpha: if e not in val and e!=0 : val.append(e) val.sort(reverse=True) j=0 for n in val: start=0 for i in range(alpha.count(n)): beta[j]=alpha.index(n,start)+1 start=beta[j] j+=1 #print('beta',beta) return beta texte='XQEBX MUEMZ FQDUQ EXQEB XGEOA GDFQE EAZFX QEYQU XXQGD QE' Ordre=analyse(texte) for i in range(3): print('clef={}'.format(Ordre[i]-5),encode(texte,Ordre[i]-5))