Skip to content

Centipes/encryption_algorithms

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Блочные симметричные алгоритмы шифрования

В этом репозитории предложены реализации трех алгоритмов шифрования, которые участвовали в конкурсе AES в 1998 году: MAGENTA, HPC-Medium, LOKI97. Каждый из криптоалгоритмов имеет структуру Файстеля и является симметричным и блочным. Процедуры шифрования и дешифрования алгоритмами выполняются в фоновом потоке для файлов любого формата и размера. Для корректной работы алгоритмов необходимо подключить библиотеку PyQt.

MAGENTA

(Multifunctional Algorithm for General-purpose Encryption and Network Telecommunication Applications) – блочный симметричный алгоритм шифрования, разработанный Майклом Якобсоном и Клаусом Хубером для немецкой телекоммуникационной компании Deutsche Telekom AG. https://web.archive.org/web/20160327015426/https://edipermadi.files.wordpress.com/2008/09/magenta-spec.pdf

Размер ключа может принимать три значения: 128, 192 и 256 бит. Размер блока открытого текста – 128 бит.

Алгоритмом можно воспользоваться через графический интерфейс, запустив модуль magenta_ui.py, который предоставляет пользователю удобный интерфейс для взаимодействия с файловой системой. По завершению криптопреобразований создается файл в рабочей директории с расширением .enc и .dec в зависимости от типа операции. Таким образом, пользователю не предлагается выбрать название файла, в котором будет храниться результат шифрования или дешифрования.

Кроме того, класс CryptoThread для управления потоками криптопреобразований из модуля magenta.py не привязан к разработанному интерфейсу, поэтому его можно встраивать в другие прикладные решения.

Пример использования

from magenta import CryptoThread

key = 'E1QFs9ohqwBwwdILOtOXX70Er'

enc = CryptoThread(bits=128, key=key, type='enc', file_in='file_plntxt', file_out='file_enc', mode='ECB', parent=None)
enc.run() # если указан parent, то enc.start()

dec = CryptoThread(bits=128, key=key, type='dec', file_in='file_enc', file_out='file_dec', mode='ECB', parent=None)
dec.run() # если указан parent, то dec.start()

Программа разделена на два блока, написанных на разных языках. Первый блок состоит из динамической библиотеки на языке Си, в которую вынесены все криптографические примитивы. Второй блок состоит из модулей пользовательского интерфейса, управления криптографическими примитивами и файловыми потоками на Python. Такое архитектурное решение обеспечивает высокую скорость шифрования.

Шифрование может происходить в пяти режимах ECB, CBC, CFB, OFB, CTR. https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation

HPC-Medium

(Hasty Pudding Cipher) — блочный симметричный криптоалгоритм, созданный известным американским криптологом и математиком Ричардом Шреппелем из Университета штата Аризона. http:https://richard.schroeppel.name:8015/hpc/hpc-spec

Здесь представлена реализация шифрования для HPC-Medium, который может принимать блок открытого текста размером 65 — 128 бит. Введенный пользователем ключ проходит процедуру расширения - формирование расширенного ключа, являющегося массивом из 256 64-битных слов. Кроме обычного ключа можно использовать дополнительный ключ «соль» размером 512 бит.

Алгоритмом шифрования HPC-Medium можно воспользоваться через графический интерфейс, запустив модуль hpc_ui.py. По завершению криптопреобразований создается файл с расширением .enc и .dec в зависимости от типа операции.

Другой вариант использования алгоритма позволяет встраивать класс CryptoThread из модуля hpc_medium.py в другие прикладные решения.

Пример использования

from hpc_medium import CryptoThread

key = 'Rf6m9E5RniuWaVAxe09t'
spice = 'zBSQGheK7TdfpTb12jhLMnA'

enc = CryptoThread(key, type='enc', file_in='file_plntxt', file_out='file_enc', spice=spice, mode='CFB', parent=None)
enc.run() # если указан parent, то enc.start()

dec = CryptoThread(key, type='dec', file_in='file_enc', file_out='file_dec', spice=spice, mode='CFB', parent=None)
dec.run() # если указан parent, то dec.start()

Используемые режимы шифрования: ECB, CBC, CFB, OFB.

LOKI97

Cимметричный блочный шифр, разработанный Lawrie Brown совместно с J.Pieprzyk и J.Seberry. LOKI97 преобразует 128-битный блок исходного текста в 128 бит шифротекста. В самом алгоритме используется 256-битный ключ, однако ключ может быть 256, 192, а также 128-битным. http:https://lpb.canb.auug.org.au/adfa/papers/ssp97/loki97b.html

Алгоритмом LOKI97 можно воспользоваться через графический интерфейс, запустив модуль locki97_ui.py. В этой реализации пользователю предлагается явно сохранить результат шифрования или дешифрования в файл с желаемым названием.

Другой вариант использования алгоритма позволяет встраивать класс CryptoThread из модуля loki97.py в другие прикладные решения.

Пример использования

from loki97 import CryptoThread

key = 'ACev6iUGx8sD86rVhvHrwH94t'

enc = CryptoThread(key, type='enc', file_in='file_plntxt', file_out = 'file_enc', mode='CBC', parent = None)
enc.run() # если указан parent, то enc.start()

dec = CryptoThread(key, type='dec', file_in='file_enc', file_out = 'file_dec', mode='CBC', parent = None)
dec.run() # если указан parent, то dec.start()

Используемые режимы шифрования: ECB, CBC, CFB, OFB.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published