Предмет: Программно-аппаратная защита информации
Преподаватель: Оцоков Шамиль Алиевич
Курс: 4.
Университет: РТУ МИРЭА (Московский Институт Радиоэлектроники и Автоматики)
Факультет (институт): КБСП (Комплексной безопасности и специального приборостроения)
Составить программу для демонстрации шифрования и дешифрования с помощью алгоритма Шамира.
Взято из Контрольной работы №3: Задача №2, Вариант 2
Код
def obrat(num1, num2):
for i in range(num2 - 1):
if (num1 * i) % num2 == 1:
return i
else:
pass
# Пусть А хочет передать В сообщение mA = 22. А выбирает p = 53, cA = 11 и вычисляет dA = 19.
# Аналогично, В выбирает параметры сB = 17 и dB= 49.
message = int(input('-> ВАШЕ СООБЩЕНИЕ: '))
print()
p = int(input('-> Вы абонент А: придумайте число "p": '))
print(' <- ВЫ ПЕРЕДАЛИ ЧИСЛО P АБОНЕНТУ Б')
x1 = int(input('-> Вы абонент А: Придумайте число x1: '))
x2 = obrat(x1, p-1) # Нахождение обратного x2
print(' <- Ваше число x2 =', x2)
print()
y1 = int(input('-> Вы абонент Б: Придумайте число x1: '))
y2 = obrat(y1, p-1) # Нахождение обратного y2
print(' <- Ваше число y2 =', y2)
print()
X1 = message ** x1 % p # Шифр MESSAGE с помощью x1 абонента A, результат X1
print(' <- X1 =', X1)
print(' <- ВЫ ПЕРЕДАЛИ ЧИСЛО X1 АБОНЕНТУ Б')
Y1 = X1 ** y1 % p # Шифр X1 с помощью y1 абонента Б, результат Y1
print(' <- Y1 =', Y1)
print(' <- ВЫ ПЕРЕДАЛИ ЧИСЛО Y1 АБОНЕНТУ А')
X2 = Y1 ** x2 % p # Шифр Y1 с помощью x2 абонента А, результат X2
print(' <- X2 =', X2)
print(' <- ВЫ ПЕРЕДАЛИ ЧИСЛО X2 АБОНЕНТУ Б')
Y2 = X2 ** y2 % p # Шифр X2 с помощью y2 абонента Б, результат Y2
print(' <- Y2 =', Y2)
print(' <- ВЫ ПЕРЕДАЛИ ЧИСЛО Y1 АБОНЕНТУ А')
print()
if Y2 == message:
print(' <- СООБЩЕНИЕ ' + str(Y2) + ' ПЕРЕДАНО УСПЕШНО.')
else:
print('E <- В процессе передачи сообщения ' + str(message) + 'была допущена ошибка\n'
' при расшифровке сообщения получилось это:', str(Y2))
Вывод
-> ВАШЕ СООБЩЕНИЕ: 22 -> Вы абонент А: придумайте число "p": 53 <- ВЫ ПЕРЕДАЛИ ЧИСЛО P АБОНЕНТУ Б -> Вы абонент А: Придумайте число x1: 11 <- Ваше число x2 = 19 -> Вы абонент Б: Придумайте число x1: 17 <- Ваше число y2 = 49 <- X1 = 26 <- ВЫ ПЕРЕДАЛИ ЧИСЛО X1 АБОНЕНТУ Б <- Y1 = 35 <- ВЫ ПЕРЕДАЛИ ЧИСЛО Y1 АБОНЕНТУ А <- X2 = 14 <- ВЫ ПЕРЕДАЛИ ЧИСЛО X2 АБОНЕНТУ Б <- Y2 = 22 <- ВЫ ПЕРЕДАЛИ ЧИСЛО Y1 АБОНЕНТУ А <- СООБЩЕНИЕ 22 ПЕРЕДАНО УСПЕШНО.