Skip to content

Latest commit

 

History

History
67 lines (44 loc) · 4.66 KB

README.md

File metadata and controls

67 lines (44 loc) · 4.66 KB

Криптосистема с открытым ключом(RSA)

Консольная программа, позволяющая:

  1. Генерировать ключи заданной длины.
  2. Подписывать заданный файл.
  3. Проверять подпись.
  4. Шифровать заданный файл.
  5. Расшифровывать файл.

Программа позволяет работать с файлами любой длины. Программа является утилитой командной строки. [имя_программы] --help – выводит как ей пользоваться

[имя_программы] genkey --size 1024 --pubkey pk.txt --secret secret.txt Генерирует ключи. Открытый сохраняется в pk.txt, закрытый – в secret.txt. Размер может быть любой, кратный 256: 256, 512, 1024, 2048.

[имя_программы] sign --infile file.txt --secret secret.txt --sigfile signature.txt Вычислят подпись файла, сохраняет ее в signature.txt.

[имя_программы] check --infile file.txt --pubkey pk.txt --sigfile signature.txt Проверяет подпись файла, результат пишет в stdout.

[имя_программы] --infile file.txt --pubkey pk.txt --outfile file_out.txt Шифрует файл для получателя. Результат помещает в file_out.txt

[имя_программы] --infile file.txt.enc --secret secret.txt --outfile file.txt Расшифровывает файл. Результат помещает в file.txt.

##Итог

Оценка оптимизаций на разных этапах производилась путем сравнение свободных клетотаблиц времени к ключу, затраченного на зашифаровку, расшифровку файла.

Время работы алгоритма без оптимизации

image

На этом и последующих рисунках будет показываться размер ключа в битах, время в секундах, минутах и часах, в первом, втором, третьем и четвертом столбце соответсветнно. Кроме того, в последующих столбцах приводятся сравнения по затраченному времени относительно других результатов (времени без оптимизаций (эталон) или промежуточных результатов).

Оптимизация на уровне алгоритма

Для данной оптимизации был выбран алгоритм перемножения многочленов методом быстрого преобразования Фурье Для перемножения чисел в исходной программе используется метод Карацубы, сложность алгоритма которого: O(n^(log_2(3)))

image

Машинно-независимая оптимизация

В машинно-независимых оптимизациях были свернуты некоторые циклы, развернут короткий цикл и заменен цикл for на внутреннию функцию языка Си (memcpy)

image

Ассемлерная вставка

Время выполнения программы с aсселблерной вставкой незначительно уменьшилось.

image

Машино-зависимая оптимизация

Время выполнения программы с машинно-зависимой оптимизацией незначительно увеличилось.

image

Финальное время выполнения

Финальное время выполнения алгоритма суммарно уменьшилось в 4 раза.

image