Python: Генерация группы ключей

Опять делюсь универскими наработками. Задача в общем то примитивная (или по крайней мере её реализация). Надо сгенерировать N равнозначных ключей для шифрования/дешифрования сообщения. Т.е., генерируем 10 ключей, шифруем сообщение любым из этих 10, расшифровываем так же любым из этих 10. Например, зашифровали пятым ключом, расшифровали третьим, или десятым.

Для реализации поставленной задачи опять прибегнем к ксору aka XOR, исключающее или, почти шифр Вернама. Почти — потому что длинна ключа у нас по сути не равна длине сообщения. Алгоритм будет таков:

  1. Дано начальное значение ikey. В общем то это и будет на самом деле ключ, который используется в шифровании и расшифровке, просто он будет «спрятан» в сгенерированных ключах.
  2. Генерируем 10 случайных строк по длине равных ключу ikey.
  3. Для каждой строки из предыдущего пункта выполняем: xor(A, ikey) + A. Полученные строки и будут нашими ключами.

Теперь для шифрования нам необходимо предварительно обработать введёный ключ и извлечь из него ikey. Это можно сделать по ксорив первую половину ключа со второй. И с помощью ikey уже шифровать или расшифровывать сообщение.

Реализацию ксора в python нашёл на просторах инета (выглядит довольно красиво, я пока так не умею), остальное писал сам. Вот исходник:

Единственная поправка к алгоритму, который я описал — ключи перед выводом я перевожу в шестнадцатиричное число, чтобы не хранить ключи в бинарном виде, ну и после ввода так же перевожу обратно. На этом всё.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: