Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #projet : vigenere avec clef ISN H4 2015
- def cryptagebiner(clef):
- print("veuillez specifier la route du fichier sous la forme E:\Exemple\Fichier.txt")
- route=input()
- fbi=list(open(route, "rb"))
- print(fbi)
- if len(fbi)%4!=0:
- fbilong=len(fbi)-(len(fbi)%4)
- compatibilitymode=True
- else:
- fbilong=len(fbi)
- #print("ca devrait marcher")
- compatibilitymode=False
- #on cree le fichier crypte, on prend le meme nom, meme extension, suivie de cms (cryptage-marechal-sanchez(qui est base sur du vigenere, en fait))
- routefinale=list(route)
- routefinale.append("cms")
- routefinale="".join(routefinale)
- ficry =open(routefinale, "wb")
- binairefinal=[]*len(fbi)
- if compatibilitymode==True:
- for z in range (len(fbi)-1,len(fbi)-1-(len(fbi)%4),-1):
- binairefinal[z]=fbi[z]
- #on procede a transformer le fichier en hexadecimal
- i=0
- while(i<fbilong):
- ini=i
- binaire=[0]*4
- #bug possible a ce niveau, si le fichier n'a pas un nombre k4 bits, k entier SOLVED
- #je procede a le resoudre qqls lignes au dessus FAIT
- for j in range(i,i+4,1):
- binaire[j-i]=fbi[j]
- i=ini
- if binaire[i]==0:
- if binaire[i+1]==0:
- if binaire[i+2]==0:
- if binaire[i+3]==0:
- hexa=0
- else:
- hexa=1
- else:
- if binaire[i+3]==0:
- hexa=2
- else:
- hexa=3
- else:
- if binaire[i+2]==0:
- if binaire[i+3]==0:
- hexa=4
- else:
- hexa=5
- else:
- if binaire[i+3]==0:
- hexa=6
- else:
- hexa=7
- else:
- if binaire[i+1]==0:
- if binaire[i+2]==0:
- if binaire[i+3]==0:
- hexa=8
- else:
- hexa=9
- else:
- if binaire[i+3]==0:
- hexa=10
- else:
- hexa=11
- else:
- if binaire[i+2]==0:
- if binaire[i+3]==0:
- hexa=12
- else:
- hexa=13
- else:
- if binaire[i+3]==0:
- hexa=14
- else:
- hexa=15
- #on travaille sur hexa a present
- hexa=(hexa+position(clef[round(i/4)%len(clef)]))%16
- if hexa==9 or hexa==8 or hexa==10 or hexa==11 or hexa==12 or hexa==13 or hexa==14 or hexa==15 :
- one=1
- else:
- one=0
- if hexa==4 or hexa==5 or hexa==6 or hexa==7 or hexa==12 or hexa==13 or hexa==14 or hexa==15 :
- two=1
- else:
- two=0
- if hexa==2 or hexa==3 or hexa==6 or hexa==7 or hexa==10 or hexa==11 or hexa==14 or hexa==15 :
- three=1
- else:
- three=0
- if hexa==1 or hexa==3 or hexa==5 or hexa==7 or hexa==9 or hexa==13 or hexa==11 or hexa==15:
- four=1
- else:
- four=0
- binairefinal[i]=one
- binairefinal[i+1]=two
- binairefinal[i+2]=three
- binairefinal[i+3]=four
- i=i+4
- #on procede a lecriture du fichier
- ficry.write(binairefinal)
- def position(i):
- #donne la position de la hexa i ou rend la hexa
- c=0
- if i.isalpha()==True:
- if i.isupper==True:
- c=ord(i)-ord("A")+1
- else:
- c=ord(i)-ord("a")+1
- elif i.isdigit()==True:
- c=int(i)
- return c
- #encodage
- def encodage(txt):
- crypt=list(txt)
- #print(crypt)
- for i in range(len(crypt)):
- if crypt[i].isalpha()==True:
- if crypt[i].isupper()==True:
- crypt[i]=chr(ord("A")+((position(txt[i])+position(clef[i%len(clef)])-1)%26))
- else :
- crypt[i]=chr(ord("a")+((position(txt[i])+position(clef[i%len(clef)])-1)%26))
- return ("".join(crypt))
- print("Si vous souhaitez encoder: tapez 1")
- print("Si vous souhaitez decoder(mais uniquement du viegenere avec clef): 2")
- choix=int(input("votre choix: "))
- if choix==1:
- clef=input("entrez la clef: ")
- print("si vous souhaitez encoder un fichier, tapez 1, si juste un texte 2: ")
- choix=int(input())
- if choix==1:
- cryptagebiner(clef)
- else:
- txt=input("preciser le texter a encoder : ")
- print("ceci donne: ",encodage(txt))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement