1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| mot_clair=input("Saisir votre message secret:")
tperm=[[2,1,0],[1,0,2],[2,2,2],[3,1,1],[1,2,2],[3,2,1],[3,3,3],[2,0,3],[4,0,1],[4,3,2],[1,1,1],[4,5,2],[5,0,0],[3,3,1],[5,0,1],[4,4,4]]
tcles=[[4,1,9],[35,2,8],[33,5,4],[5,20,37],[2,7,6],[22,21,25],[21,22,23],[10,13,15],[2,2,1],[11,11,11],[12,13,24],[20,20,20],[25,23,24],[14,14,14],[7,8,9],[5,2,3]]
def permute(m,perm): #m et perm ont meme longueur
return "".join([m[perm[i]] for i in range(len(m))
def Vigenere(m,cle): #m et cle ont meme longueur
return "".join([chr((ord(m[i])+cle[i])%256) for i in range(len(m))])
def DES_BLOC(m,tperm,tcles):
p=len(m)//2
for i in range(len(tperm)):
m=m[p:p+p]+Vigenere(permute(m[0:p],perm[i]),tcles[i])
return m
def DES_phrase(phrase,tperm,tlces,LBloc):#LBloc=2p
phrase+=(LBloc-len(phrase)%LBloc)*" "
phrase_crypte=""
for i in range(0,len(phrase),LBloc):
phrase_crypte+=DES_bloc(phrase[i:i+LBloc],tperm,tcles)
return phrase_crypte |
Partager