Advertisement
Eastkap

ISN project

May 14th, 2015
297
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.83 KB | None | 0 0
  1. #projet : vigenere avec clef ISN H4 2015
  2.  
  3. def cryptagebiner(clef):
  4.     print("veuillez specifier la route du fichier sous la forme E:\Exemple\Fichier.txt")
  5.     route=input()
  6.     fbi=list(open(route, "rb"))
  7.     print(fbi)
  8.     if len(fbi)%4!=0:
  9.         fbilong=len(fbi)-(len(fbi)%4)
  10.         compatibilitymode=True
  11.     else:
  12.         fbilong=len(fbi)
  13.         #print("ca devrait marcher")
  14.         compatibilitymode=False
  15.        
  16.     #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))
  17.     routefinale=list(route)
  18.     routefinale.append("cms")
  19.     routefinale="".join(routefinale)
  20.     ficry =open(routefinale, "wb")
  21.     binairefinal=[]*len(fbi)
  22.     if compatibilitymode==True:
  23.         for z in range (len(fbi)-1,len(fbi)-1-(len(fbi)%4),-1):
  24.             binairefinal[z]=fbi[z]
  25.     #on procede a transformer le fichier en hexadecimal
  26.     i=0
  27.     while(i<fbilong):
  28.         ini=i
  29.         binaire=[0]*4
  30.        
  31.         #bug possible a ce niveau, si le fichier n'a pas un nombre k4 bits, k entier SOLVED
  32.        
  33.         #je procede a le resoudre qqls lignes au dessus FAIT
  34.         for j in range(i,i+4,1):
  35.             binaire[j-i]=fbi[j]
  36.            
  37.         i=ini
  38.        
  39.         if binaire[i]==0:
  40.             if binaire[i+1]==0:
  41.                 if binaire[i+2]==0:
  42.                     if binaire[i+3]==0:
  43.                         hexa=0
  44.                     else:
  45.                         hexa=1
  46.                 else:
  47.                     if binaire[i+3]==0:
  48.                         hexa=2
  49.                     else:
  50.                         hexa=3
  51.             else:
  52.                 if binaire[i+2]==0:
  53.                     if binaire[i+3]==0:
  54.                         hexa=4
  55.                     else:
  56.                         hexa=5
  57.                 else:
  58.                     if binaire[i+3]==0:
  59.                         hexa=6
  60.                     else:
  61.                         hexa=7
  62.         else:
  63.             if binaire[i+1]==0:
  64.                 if binaire[i+2]==0:
  65.                     if binaire[i+3]==0:
  66.                         hexa=8
  67.                     else:
  68.                         hexa=9
  69.                 else:
  70.                     if binaire[i+3]==0:
  71.                         hexa=10
  72.                     else:
  73.                         hexa=11
  74.             else:
  75.                 if binaire[i+2]==0:
  76.                     if binaire[i+3]==0:
  77.                         hexa=12
  78.                     else:
  79.                         hexa=13
  80.                 else:
  81.                     if binaire[i+3]==0:
  82.                         hexa=14
  83.                     else:
  84.                         hexa=15
  85.        
  86.         #on travaille sur hexa a present
  87.         hexa=(hexa+position(clef[round(i/4)%len(clef)]))%16
  88.        
  89.         if hexa==9 or hexa==8 or hexa==10 or hexa==11 or hexa==12 or hexa==13 or hexa==14 or hexa==15 :
  90.             one=1
  91.         else:
  92.             one=0
  93.         if hexa==4 or hexa==5 or hexa==6 or hexa==7 or hexa==12 or hexa==13 or hexa==14 or hexa==15 :
  94.             two=1
  95.         else:
  96.             two=0
  97.         if hexa==2 or hexa==3 or hexa==6 or hexa==7 or hexa==10 or hexa==11 or hexa==14 or hexa==15 :
  98.             three=1
  99.         else:
  100.             three=0
  101.         if hexa==1 or hexa==3 or hexa==5 or hexa==7 or hexa==9 or hexa==13 or hexa==11 or hexa==15:
  102.             four=1
  103.         else:
  104.             four=0
  105.            
  106.         binairefinal[i]=one
  107.         binairefinal[i+1]=two
  108.         binairefinal[i+2]=three
  109.         binairefinal[i+3]=four
  110.        
  111.         i=i+4
  112.    
  113.     #on procede a lecriture du fichier
  114.     ficry.write(binairefinal)
  115.  
  116.  
  117.  
  118. def position(i):
  119.     #donne la position de la hexa i ou rend la hexa
  120.     c=0
  121.     if i.isalpha()==True:
  122.         if i.isupper==True:
  123.             c=ord(i)-ord("A")+1
  124.         else:
  125.             c=ord(i)-ord("a")+1
  126.     elif i.isdigit()==True:
  127.         c=int(i)
  128.     return c
  129.    
  130.    
  131.  
  132. #encodage
  133. def encodage(txt):
  134.     crypt=list(txt)
  135.     #print(crypt)
  136.     for i in range(len(crypt)):
  137.         if crypt[i].isalpha()==True:
  138.             if crypt[i].isupper()==True:
  139.                 crypt[i]=chr(ord("A")+((position(txt[i])+position(clef[i%len(clef)])-1)%26))
  140.             else :
  141.                 crypt[i]=chr(ord("a")+((position(txt[i])+position(clef[i%len(clef)])-1)%26))
  142.    
  143.     return ("".join(crypt))
  144.    
  145.    
  146. print("Si vous souhaitez encoder: tapez 1")
  147. print("Si vous souhaitez decoder(mais uniquement du viegenere avec clef): 2")
  148. choix=int(input("votre choix:  "))
  149. if choix==1:
  150.     clef=input("entrez la clef: ")
  151.     print("si vous souhaitez encoder un fichier, tapez 1, si juste un texte 2: ")
  152.     choix=int(input())
  153.     if choix==1:
  154.         cryptagebiner(clef)
  155.     else:
  156.         txt=input("preciser le texter a encoder : ")
  157.         print("ceci donne: ",encodage(txt))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement