1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| 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 Vignere(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]+Vignere(permute(m[0:p],tperm[i]),tcles[i])
return m
def DES_phrase(phrase,tperm,tcles,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