Лабораторные работы по дисциплине: защита информации (7 семестр)
Язык: С
Некую программу можно запустить только на том компьютере, где запущен установочник.
версия 1: Установочник узнает свой cpuid и пишет его в файлик-лицензию. Осовная програма узнает свой cpuid и считывает файлик-лицензию, если они совпадают - значит проверка пройдена успешно, иначе - нет.
версия 2: Основная программа узнает свой cpuid и сравнивает его с захардкоженной строкой. Если они совпадают - значит проверка пройдена успешно. Установочник узнает свой cpuid, затем читает файл основной программы, ищет начало захардкоженной строки и заменяет её на cpuid.
todo: смещение искомой строки сделано подбором, желательно сделать динамически.
версия 3: Java - версия, как версия 1, только для Windows и по id локального диска.
Язык: JavaScript
Программная реализция криптографической машины «Энигма». Колличество роторов задается программно. роторы и рефлекторы создаются с помощью Math.random().
Алгоритм: DES
Язык: С
Алгоритм: RSA
Язык: JavaScript
Считывание файла по блокам в 1 байт. Простые числа берутся случайно из [MIN, 256] пока не пройдут проверку на простоту тестом Рабина-Миллера, а MIN и 256 - из файла конфига. 256 - потому что квадрат даст число типа word, и шифрованный файл будет в два раза больше исходного. Придется читать этот файл по блокам типа word, но я этого не делаю, а просто дешифрую из старого буфера. Число e берется случайно из [MIN_FI, fi) пока НОД этого числа с fi не будет равно 1 .
Алгоритм: LZW.
Язык: Java