ajout de tous les cours et TP préparés cet été
This commit is contained in:
67
Sécurité/exemples/chiffrement_rsa.py
Executable file
67
Sécurité/exemples/chiffrement_rsa.py
Executable file
@@ -0,0 +1,67 @@
|
||||
#!/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)
|
||||
Reference in New Issue
Block a user