Предмет: Программно-аппаратная защита информации
Преподаватель: Оцоков Шамиль Алиевич
Курс: 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 ПЕРЕДАНО УСПЕШНО.