Хелпикс

Главная

Контакты

Случайная статья





Список литературы.. Приложение 1.



Список литературы.

 

· https: //e-nigma. ru/stat/rsa/

· https: //ru. wikipedia. org/wiki/Криптография

· https: //ru. wikipedia. org/wiki/RSA#Описание_алгоритма

· https: //ru. wikipedia. org/wiki/Криптосистема_с_открытым_ключом

· https: //ru. wikipedia. org/wiki/Шифрование

 

 

 

Приложение 1.

import random
import sympy


def gcd(a, b):
while b! = 0:
   a, b = b, a % b
return a


def multiplicative_inverse(e, phi):
d = 0
x1 = 0
x2 = 1
y1 = 1
temp_phi = phi

while e > 0:
   temp1 = temp_phi // e
   temp2 = temp_phi - temp1 * e
   temp_phi = e
   e = temp2

   x = x2 - temp1 * x1
   y = d - temp1 * y1

   x2 = x1
   x1 = x
   d = y1
   y1 = y

if temp_phi == 1:
   return d + phi


def generate_keypair(p, q):
n = p * q
phi = ((p - 1) * (q - 1))

e = random. randrange(1, phi)

g = gcd(e, phi)
while g! = 1:
   e = random. randrange(1, phi)
   g = gcd(e, phi)

d = multiplicative_inverse(e, phi)

return ((e, n), (d, n))


def encrypt(pk, plaintext):
key, n = pk
cipher = [(ord(char) ** key) % n for char in plaintext]
  return cipher


def decrypt(pk, ciphertext):
key, n = pk
plain = [chr((char ** key) % n) for char in ciphertext]
return ''. join(plain)


p = sympy. randprime(1, 100)
q = sympy. randprime(1, 100)

public, private = generate_keypair(p, q)

message = input(" Введите текст: " )

encrypted_msg = encrypt(public, message)

print(f" {encrypted_msg}" )

print(f" Расшифрованный текст: {decrypt(private, encrypted_msg)}" )

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.