Skip to content

Testing Scrambler, XOR-cipher, Hill-cipher, Feistel-cipher, DES (ECB, CBC, CFB, OFB, BC, PCBC, OFBNLF, EDE modes; simple double encryption; Davies-Price encryption mode; triple algorithm with three keys), Generating prime numbers with specific size, Searching for the first 100 primitive roots of a number, Diffie-Hellman Protocol Demonstration, R…

Notifications You must be signed in to change notification settings

chyd1k/Cryptography-algorithms

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Криптография

Для запуска программы необходимо выполнить скрипт mainWindow.py

Описание

Приложение включает в себя следующие модули:

  • ChiSqr
  • DES
  • DiffieHellman
  • Feistel
  • Hash
  • Hill
  • PrimeNumbers
  • PrimitiveRoots
  • RSA
  • XOR

Далее следует краткое описание каждого модуля.

ChiSqr

Этот модуль предоставляет возможности для тестирования скремблера с заданным полиномом и начальным значением. Модуль находит период последовательности, а также считает показатель Хи-квадрат указывающий насколько генерируемая последовательность приближена к равномерному распределению.

DES

Этот модуль предоставляет возможность шифрования и дешифрования текста с помощью блочного алгоритма шифрования DES.

DiffieHellman

Этот модуль предоставляет возможность симуляции передачи ключа по протоколу Диффи-Хеллмана. Пользователь может вручную задавать открытый ключ (n, g), а также секретные числа каждого из пользователей A и B. Также можно сгенерировать все значения автоматически.

Feistel

Этот модуль предоставляет возможность шифрования и дешифрования данных с помощью сети Фейстеля. Пользователь выбирает файл с тектом для шифрования или дешифрования, а также файл с ключом. Текст и ключ записываются в соответствующие поля и пользователь может менять представление текста и ключа в символьном или шестнадцатеричном виде. Зашифрованый/дешифрованый текст записывается в файл, указанный пользователем. Также пользователь может выбирать одну из двух образующих функций сети, а также один из двух методов генерации ключа. Также модуль предоставляет возможность посчитать лавинный эффект сети.

Образующие функции:

Функция 1:

def black_box_a(a, b):
    return b

Функция 2:

def black_box(a, b):
    return pow(a * b, 545735704168155525106215935941802819184685939157133628190496058664778626084654658157215100397614, 2 ** (self.blocksize // 2) - 1)

Методы генерации ключа:

Метод 1:

def generate_round_keys(self) -> list:
    round_keys = []
    bin_key = bin(self.key)[2:]
    for i in range(self.rounds_count):
        key = ""
        for j in range(32):
            key += bin_key[(i+j) % len(bin_key)]
        round_keys.append(int(key, 2))
    return round_keys

Метод 2:

def generate_round_keys_a(self) -> list:
    round_keys = []
    polynom = [9, 1, 0]
    bin_key = bin(self.key)[2:]
    for i in range(self.rounds_count):
        root = ""
        for j in range(8):
            root += bin_key[(i + j) % len(bin_key)]
        root = int(root, 2)
        scrembler = LFSR.LFSR(polynom, root)
        bits = "".join(map(str, list(scrembler.get_bits(32))))
        round_keys.append(int(bits, 2))
    return round_keys

Hash

Этот модуль предоставляет возможность генерации цифровой подписи для файлов, а также проверки цифровой подписи файлов по алгоритмам RSA и Эль-Гамаля.

Hill

Этот модуль предоставляет возможность шифрования и дешифрования текста с помощью шифра Хилла. Шифр использует следующий алфавит:

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!\"#$%&'()*+,-./:;<=>?@[\]^_`АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя

PrimeNumbers

Этот модуль используется для генерации простых чисел заданной длины а также для генерации всех простых чисел из диапазона. Пользователь указывает битовую длину числа, а также количество тестов Миллера-Рабина, которое должно пройти сгенерированное число. Программа выводит время затраченное на генерацию простого числа, а также количество итераций генерации, потребовавшихся для достижения необходимой точности и время генерации числа. Кроме того программа выводит вероятность того, что число простое.

PrimitiveRoots

Модуль используется для поиска первых 100 первообразных корней для заданного модуля. Программа выводит список корней, а также время, затраченное на их поиск. Количество выведенных корней может быть менее 100, если от 1 до n, таких корней меньше 100 для заданного корня.

RSA

Этот модуль позволяет шифровать текст с помощью алгоритма DES, при этом ключ к DES шифруется с помощью RSA.

XOR

Этот модуль предоставляет возможность шифрования и дешифрования текста с использованием XOR-шифрования. Текст для шифрования и ключ записываются в соответствующие поля из выбранных пользователем файлов. Пользователь может изменять вид текста и ключа на символьный, двоичный или шестнадцатеричный. Зашифрованный текст записывается в файл, а также в соответствующее поле, вид которого также может быть изменен. Кроме выбора ключа из файла пользователь может сгенерировать ключ случайным образом с помощью сдвигового регистра с линейной обратной связью (LFSR), построенного на выбранном пользователем полиноме.


Оформление имен файлов

В папке каждого из модулей находятся файлы нескольких типов:

  1. .py файлы с постфикосм _interface в названии. В этих файлах описан графический интерфейс пользователя данного модуля, но нет подвязки к логике.
  2. .ui файлы, это файлы QtDesigner'а, в которых также описан графический интерфейс пользователя для данного модуля.
  3. .py файлы с таким же названием как и сам модуль. Это главный файл модуля. В нём элементы интерфейса привязываются к логике. Запустив этот файл, можно запустить сам модуль, отдельно от остальной программы.
  4. Остальные .py файлы используются при необходимости. В них может быть вынесена часть логики. tests.py файлы могут использоваться для проведения некоторых тестов во время разработки.
  5. Другие файлы не должны влиять на работу модуля и программы в общем.

About

Testing Scrambler, XOR-cipher, Hill-cipher, Feistel-cipher, DES (ECB, CBC, CFB, OFB, BC, PCBC, OFBNLF, EDE modes; simple double encryption; Davies-Price encryption mode; triple algorithm with three keys), Generating prime numbers with specific size, Searching for the first 100 primitive roots of a number, Diffie-Hellman Protocol Demonstration, R…

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages