67 lines
1.9 KiB
Python
Executable File
67 lines
1.9 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
"""
|
|
Created on Wed Feb 3 12:41:14 2021
|
|
|
|
@author: pjoulaud
|
|
"""
|
|
|
|
CLE_PRIV_P = 53
|
|
CLE_PRIV_Q = 97
|
|
CLE_PUB_E = 7
|
|
CLE_PUB_N = CLE_PRIV_P * CLE_PRIV_Q
|
|
|
|
|
|
def conversion_message_en_nombre(chaine, bloc=3):
|
|
nombre = ""
|
|
for i in chaine :
|
|
nombre += str(ord(i)-ord('A')+1)
|
|
#print(nombre)
|
|
while len(nombre)%bloc != 0 :
|
|
nombre = '0' + nombre
|
|
return nombre
|
|
|
|
def chiffrement(chaine_num, bloc=3, e=CLE_PUB_E, n=CLE_PUB_N):
|
|
code = ""
|
|
for i in range(len(chaine_num)//bloc):
|
|
morceau_chaine_num = chaine_num[i*bloc:(i+1)*bloc]
|
|
#print(morceau_chaine_num)
|
|
morceau_chaine_num = int(morceau_chaine_num)
|
|
morceau_chaine_num = morceau_chaine_num**e
|
|
morceau_chaine_num = morceau_chaine_num%n
|
|
morceau_chaine_num = str(morceau_chaine_num)
|
|
code += morceau_chaine_num
|
|
code += ' '
|
|
return code[:-1]
|
|
|
|
def dechiffrement(chaine_num, bloc=2, e=CLE_PUB_E, n=CLE_PUB_N, p=CLE_PRIV_P, q=CLE_PRIV_Q):
|
|
nombre = 1
|
|
while nombre%e != 0 :
|
|
nombre += (p-1)*(q-1)
|
|
print(nombre)
|
|
d = nombre//e
|
|
liste_num = chaine_num.split(' ')
|
|
print(liste_num)
|
|
liste_decod = []
|
|
for i in liste_num :
|
|
decode = (int(i)**d) % n
|
|
liste_decod.append(str(decode))
|
|
print(liste_decod)
|
|
chaine_decode = ''.join(liste_decod)
|
|
print(chaine_decode)
|
|
message = ""
|
|
a_completer = len(chaine_decode)%bloc
|
|
for i in range(a_completer):
|
|
chaine_decode = '0' + chaine_decode
|
|
for i in range(len(chaine_decode)//bloc):
|
|
morceau_chaine_num = int(chaine_decode[i*bloc:(i+1)*bloc])
|
|
message += chr(morceau_chaine_num+ord('A')-1)
|
|
print(morceau_chaine_num, ' ',message)
|
|
return message
|
|
|
|
ma_chaine_num = conversion_message_en_nombre('BONJOUR')
|
|
print(ma_chaine_num)
|
|
mon_code = chiffrement(ma_chaine_num)
|
|
print(mon_code)
|
|
mon_message = dechiffrement(mon_code)
|
|
print('message : ', mon_message) |