Github


https://github.com/denisxab/SHISH

Захотелось сделать очень простое криптографическое приложение для текста, вдруг будет такая необходимость.

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

Сам ключ храниться в .json поэтому отправить, посмотреть, редактировать его просто.

Как это работает ?


  1. Создать ключ.
  2. Поделиться ключом.
  3. Написать текст в окно «Закодировать» нажать на кнопку.
  4. Отправить текст из окна «Декодировать».

Из за особенности tkinter он отвечает не list а обычным str и поэтому каждый отступ в окне «Декодировать» важен.

Создание ключа


bit = input()
rand = input()
l = {}
a = list('б','у','к','в','ы')

for x in a:
	l[x]=[]
	for y in range(rand):
		l[x].append(random.getrandbits(bit))
print(l)


Кодировать текст


slo = input()
red =dict(созданный словарь с ключом)
v = []
for x in slo:
	if x in red:
		v.append(random.choice(red[x]))
print(v)

Декодировать


list_code = input()
red = dict(созданный словарь с ключом)
v = {}

for x in red.items():
	for z in list_code:
		if z in x[1]:
			v[z]=x[0]

zx = []
for x in  list_code:
	if x in v:
		zx.append(v[x])

Комментарии (8)


  1. GETnBE
    20.07.2019 00:43
    +1

    «криптографическое приложение для текста, вдруг будет такая необходимость.» — отличная мысль для документов! :)


    1. mapron
      20.07.2019 06:52

      Вы пригласили этого пользователя, дав ему инвайт. Скажите, чем вы руководствовались?)


  1. cher11
    20.07.2019 00:53
    +1

    1) Первое правило криптографии — не изобретай свою криптографию
    2)

    global slovo
    ,
    chek_d()
    — так делать тоже, пожалуйста, не надо
    3) Так шифрование или кодирование?
    4)
    Из за особенности tkinter он отвечает не list а обычным str
    эм…

    На этом уже можно остановиться. Не надо кидать хелловорды на Хабр, пожалуйста.


  1. ZXZs
    20.07.2019 09:37
    +1

    Можно было ограничиться созданием репозитория на гитхабе с хорошим readme. Писать отдельный пост на Хабр… странно. Тогда надо было описать свой опыт, грабли и прочее, но в таком простом приложении этих граблей просто быть не может.


  1. iig
    20.07.2019 11:02

    Прочитал, но что за прикладная задача привела к созданию этого лисапеда, так и не понял. В JavaScript нет ни своей криптографии, ни base64 кодирования?


    1. Carduelis
      21.07.2019 14:11
      +1

      Криптографии, кажется, нет. Есть Web Cryptography API, А вот encoding/decoding хоть отбавляй: atob, btoa, decodeURI, decodeURIComponent, parseInt, toString.


  1. usdglander
    22.07.2019 09:57

    Я правильно понял что шифротекст имеет больший объём чем открытый?


    1. mapron
      22.07.2019 15:07

      Да, сильно больший. Но это даже не единственная беда)