#!/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)