-
Notifications
You must be signed in to change notification settings - Fork 0
/
Crypt.py
105 lines (94 loc) · 3.54 KB
/
Crypt.py
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# -*- coding: utf-8 -*-
"""Code par Victor Josso"""
from getpass import getpass
import binascii
import os
def crypt(fichier, password):
f=open(fichier,"rb")
text = f.read()
f.close()
text = bin(int(binascii.hexlify(text), 16))[2:]
pass_crypt = bin(int(binascii.hexlify(password), 16))[2:]
texte_chiffre = ""
tabl_buffer = []
toursafaire = len(text)
for x in range(len(text)):
bit_t = text[x]
bit_p = pass_crypt[x%len(pass_crypt)]
bit_c = str((int(bit_p)+int(bit_t))%2)
tabl_buffer.append(bit_c)
compteur = 0
for x in tabl_buffer:
if x == "0":
compteur+=1
else:
break
texte_chiffre = hex(int('0b'+"".join(tabl_buffer), 2))
texte_chiffre = texte_chiffre[2:len(texte_chiffre)-1]
if len(texte_chiffre)%2==1:
texte_chiffre = "0"+texte_chiffre
texte_chiffre = binascii.unhexlify(texte_chiffre)
name = fichier.split("\\")[len(fichier.split("\\"))-1]
name = name.split('.')
if len(name) == 1:
name = fichier + ".secure"
file_type = None
else:
file_type = name[len(name)-1]
name = "\\".join(fichier.split("\\")[:len(fichier.split("\\"))-1])+"\\"+".".join(name[:len(name)-1])+"-"+name[len(name)-1]+".secure"
f = open(fichier, "wb")
f.write("Original file type : "+str(file_type)+"\n")
f.write(str(compteur)+"\n")
f.write(texte_chiffre)
f.close()
return fichier
def crypt_message(message, password):
text = message
text = bin(int(binascii.hexlify(text), 16))[2:]
pass_crypt = bin(int(binascii.hexlify(password), 16))[2:]
texte_chiffre = ""
tabl_buffer = []
toursafaire = len(text)
for x in range(len(text)):
bit_t = text[x]
bit_p = pass_crypt[x%len(pass_crypt)]
bit_c = str((int(bit_p)+int(bit_t))%2)
tabl_buffer.append(bit_c)
compteur = 0
for x in tabl_buffer:
if x == "0":
compteur+=1
else:
break
texte_chiffre = hex(int('0b'+"".join(tabl_buffer), 2))
texte_chiffre = texte_chiffre[2:len(texte_chiffre)-1]
if len(texte_chiffre)%2==1:
texte_chiffre = "0"+texte_chiffre
#texte_chiffre = binascii.unhexlify(texte_chiffre)
return str(compteur)+"/"+texte_chiffre
def verif_path(path):
try:
open(path, 'r')
return True
except IOError:
return False
def setup(path_given = False):
if not path_given :
fichier = eval(input("Quel est le chemin d'acces au fichier à chiffrer ? > "))
while not verif_path(fichier):
print("Ce fichier est introuvable... Veuillez reessayer !")
fichier = eval(input("Quel est le chemin d'acces au fichier à chiffrer ? > "))
mdp = getpass("Veuillez saisir le mot de passe a utiliser pour chiffer le document > ")
while not mdp:
print("Le mot de passe ne doit pas etre vide... Veuillez reessayer !")
mdp = getpass("Veuillez saisir le mot de passe à utiliser pour chiffrer le document > ")
return fichier, mdp
else:
mdp = getpass("Veuillez saisir le mot de passe à utiliser pour chiffrer le document > ")
while not mdp:
print("Le mot de passe ne doit pas etre vide... Veuillez réessayer !")
mdp = getpass("Veuillez saisir le mot de passe a utiliser pour chiffrer le document > ")
return mdp
if __name__ == "__main__":
fichier, mdp = setup()
crypt(fichier, mdp)