Перейти к содержимому

Как зашифровать цифру 9

  • автор:

Шифрование для самых маленьких. Как объяснить ребёнку современные профессии

Публикуем историю, которая произошла с одним из сотрудников компании «Криптонит». Он объяснил профессию криптографа, играя в шифры с ребенком дошкольного возраста. Надеемся, его интересный опыт поможет вам и вашему ребёнку лучше понимать друг друга

Однажды нашего специалиста спросила его маленькая дочка: «Папа, кем ты работаешь?». Ей как раз прочитали книжку о профессиях, где всё для неё было понятно. В голове ребёнка постепенно прояснялась идея разделения труда: «Вот пекарь. Он печёт, и мы с мамой пекли в духовке. Эти дяди — строители. Мы видели их в соседнем дворе, они там строят дом».

В книге все профессии были наглядным, а характерные для них действия легко имитировались в игровой форме. Можно испечь пирожки из пластилина, или самой построить домик из кубиков. Но что делает папа? Это было загадкой!

Он никуда не ходит на работу, не надевает форму, не берёт никаких инструментов, а целый день (и даже иногда ночью, когда всем надо спать!) сидит дома за компьютером. Не играет, не смотрит мультики, а делает за ним что-то странное и просит, чтобы ему не мешали. «Наверное, он просто не хочет со мной играть!», — обижалась дочка.

После обсуждения с коллегами, у нашего специалиста дома состоялся примерно такой диалог с его дочерью:

— Пап, а что ты делаешь на работе?

— Разбираюсь с шифрами.

— Способы записать что-нибудь, сохранив в тайне. Такую запись сможет прочитать только тот, кто знает секрет. Обычно это какое-то число.

— В этом-то и загадка! Как правило, это очень большие числа, но я покажу тебе пример на маленьких.

Он решил взять для примера шифр Цезаря, адаптировав его к русскому языку и сделав нагляднее. Для этого он написал алфавит в одну строку, а сверху над краем листа положил бумажную ленту с числами по порядку. Над буквой «А» оказалась цифра «1», над буквой «Б» — цифра «2» и так далее. Чтобы ребёнку было проще уловить суть, он не стал говорить о различиях между цифрами и числами, а также других тонкостях, в которые любят вдаваться взрослые.

— Буквы ты знаешь, цифры тоже, но знаешь ли ты, что буквы можно записывать цифрами?

— Очень просто! Нужно только договориться, какие цифры обозначают каждую букву! Самый простой вариант — расположить все буквы и цифры по порядку друг над другом, вот так.

Теперь давай напишем какое-нибудь слово цифрами.

— Я хочу написать «МАМА»!

— Отлично! Смотрим, где у нас буква «М». Вот она! Какие цифры над ней?

— Правильно! Так и запишем: один, четыре. Вместе, как тут. Дальше какая буква в слове «МАМА»?

— С ней совсем просто. Она первая, поэтому над ней цифра «1». Отступим немного и напишем единичку. Теперь нам снова нужно написать цифрами «М» и «А». Мы уже знаем, что это «14» и «1». Получилось: 14 1 14 1. Чтобы прочитать, просто сделаем наоборот. Посмотрим на листок и найдём, какая буква под каждой цифрой.

— И никто не догадается, что тут написано?

— Может и догадается, если также пронумерует все буквы. Поэтому придумали способ, чтобы догадаться было сложнее. Называется он «шифр сдвига». Видишь, полоска с цифрами сдвигается.

— Если мы сдвинем её, то цифры будут означать уже
другие буквы. Смотри: мы сдвигаем на одну цифру вправо, и над «М» уже не «14»,
а «13». Ещё сдвигаем — теперь «12», и над другими буквами тоже цифры
изменились.

— Но над «А» и «Б» теперь нет цифр!

— Видишь, справа как раз появились лишние: «32» и «33». Нужно просто соединить края листа и полоски, свернув их в колечки. Тогда полоска сможет двигаться по кругу, а над каждой буквой всегда будет цифра.

После перерыва на склеивание, отмывание рук и волос они продолжили.

— Напиши другое слово!

— Хорошо! 9 31 17 30

— Как же мы его прочитаем? Полоска же крутится!

— Вот именно! Прочесть стало сложнее. Для этого теперь нужно знать не только способ записи (что мы ставим цифры над буквами по порядку), но и секрет: на сколько букв мы сдвинули полоску. Такой секрет часто называют ключом и записывают его цифрами. Лишь один ключ открывает замок, и только знание нужных цифр позволяет прочесть сообщение.

— Смотри: я могу подвинуть их на одну, на две, на три… на тридцать три буквы. Если ты знаешь, как именно я подвинул, то быстро сделаешь также и прочитаешь.

— А если не знаешь?

— Тогда придётся попробовать много вариантов, пока из цифр не получится составить слово.

— Да, и в этом вся суть шифров! Способ хитрой записи букв известен всем, и любой может написать непонятные слова (или, как говорят, зашифровать их). А вот секрет — он на то и секрет, чтобы его знали только те, кто переписывается друг с другом. Не зная его, можно пытаться прочесть зашифрованные слова так долго, что устанешь и расхочется продолжать.

— А я хочу! Давай прочитаем!

— З Э П Ь … Ничего не понятно!

— Потому, что ты не знаешь, какой у меня был ключ: на сколько букв я сдвинул полоску. Вот и буквы нашлись не те.

— Подскажу, я сдвинул на три. Давай вместе. Низ держим, верх поворачиваем. Раз, два, три, стоп! Ключ совпал. Под цифрой девять у нас оказалась буква «К»…

— Получилось К А Т Я — радостно кричит дочь.

— Правильно! Теперь давай сделаем ещё хитрее: запишем буквы другими буквами через цифры.

— Так будет непонятно даже то, что мы тут что-то написали. Может это и не слова вовсе, а просто буквы вперемешку, как у тебя сейчас на магнитной доске.

— Ты только что сделала это, когда пыталась прочесть написанное цифрами слово, не зная моего ключа. У тебя вместо «КАТЯ» получилось «ЗЭПЬ». Теперь я напишу новое слово, используя другой ключ:
— Х И Х И.

Дочка читает и смеётся.

— Что это за «ХИХИ» такое?

— Я подскажу: ключ равен девяти. Попробуй сдвинуть полоску на 9 букв и прочитать снова.

— 14 1 14 1 — М А М А! «ХИХИ» это «МАМА»!

—Да, но только если мы сделали сдвиг на 9 букв.

— Теперь я напишу!

Катя крутит полоску, хмурится и рисует очень похожие на буквы каракули: И Й И Е. От усердия она даже слегка высунула язык.

— Угадай! — Хитро улыбается юный криптограф.

Папа подыгрывает: не глядя крутит полоску снова и начинает перебирать варианты. Недаром же он специалист по криптоанализу! З И З Д, Ж З Ж Г, Ё Ж Ё В… может, она ошиблась? Наконец, на пятой попытке в расшифровке появляется осмысленное слово: Д Е Д А.

— Ура! — кричит Катя. — Деда завтра приедет, я его тоже научу шифрам! Будем вместе писать непонятно, чтобы никто не догадался!

На следующий день они действительно играют в шифрование. Иногда дочка торопится и подставляет не ту букву, а дедушка забывает, какой использовал ключ, но все счастливы. Теперь Катя знает, чем занимается папа. Он пытается прочитать непонятно написанные слова, подбирая правильные цифры. Только шифры у него гораздо сложнее, ключи очень длинные, и это совсем не игра.

Примечание: поначалу автор договорился с дочкой сдвигать полоску вправо, и все примеры в тексте приведены с таким условием. Уже при подготовке статьи возникла идея делать сдвиг влево. Тогда перед «А» можно добавить символ ключа, а перед единицей — ноль и сразу видеть значение сдвига над ключом, а не считать его вручную. На иллюстрации ниже показана усовершенствованная версия.

10 популярных кодов и шифров

Коды и шифры — не одно и то же. Объяснили разницу и разобрали 10 популярных методов шифрования, которые повлияли на сферу безопасности.

Коды и шифры — это не одно и то же: в коде каждое слово заменяется другим, в то время как в шифре заменяются все символы сообщения.

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

  1. Стандартные шифры
  2. Цифровые шифры
  3. Как расшифровать код или шифр?

Стандартные шифры

ROT1

Этот шифр известен многим детям. Ключ прост: каждая буква заменяется на следующую за ней в алфавите. Так, А заменяется на Б, Б — на В, и т. д. Фраза «Уйрйшоьк Рспдсбннйту» — это «Типичный Программист».

Попробуйте расшифровать сообщение:

Лбл еёмб, рспдсбннйту? 

Поняли, как работает это шифрование? Напишите в комментариях, что у вас получилось.

Шифр транспонирования

В транспозиционном шифре буквы переставляются по заранее определённому правилу. Например, если каждое слово пишется задом наперед, то из hello world получается dlrow olleh. Другой пример — менять местами каждые две буквы. Таким образом, предыдущее сообщение станет eh ll wo ro dl.

Ещё можно использовать столбчатый шифр транспонирования, в котором каждый символ написан горизонтально с заданной шириной алфавита, а шифр создаётся из символов по вертикали. Пример:

Из этого способа мы получим шифр holewdlo lr. А вот столбчатая транспозиция, реализованная программно:

def split_len(seq, length): return [seq[i:i + length] for i in range(0, len(seq), length)] def encode(key, plaintext): order = < int(val): num for num, val in enumerate(key) >ciphertext = '' for index in sorted(order.keys()): for part in split_len(plaintext, len(key)): try:ciphertext += part[order[index]] except IndexError: continue return ciphertext print(encode('3214', 'HELLO')) 

Азбука Морзе

10 популярных кодов и шифров 2

В азбуке Морзе каждая буква алфавита, цифры и наиболее важные знаки препинания имеют свой код, состоящий из череды коротких и длинных сигналов:
Чаще всего это шифрование передаётся световыми или звуковыми сигналами.

Сможете расшифровать сообщение, используя картинку?

Шифр Цезаря

Это не один шифр, а целых 26, использующих один принцип. Так, ROT1 — лишь один из вариантов шифра Цезаря. Получателю нужно просто сообщить, какой шаг использовался при шифровании: если ROT2, тогда А заменяется на В, Б на Г и т. д.

А здесь использован шифр Цезаря с шагом 5:

Иербэй йюк ёурбэй нтчйхйцтаъ энщхуж 

Моноалфавитная замена

Коды и шифры также делятся на подгруппы. Например, ROT1, азбука Морзе, шифр Цезаря относятся к моноалфавитной замене: каждая буква заменяется на одну и только одну букву или символ. Такие шифры очень легко расшифровываются с помощью частотного анализа.

Например, наиболее часто встречающаяся буква в английском алфавите — «E». Таким образом, в тексте, зашифрованном моноалфавитным шрифтом, наиболее часто встречающейся буквой будет буква, соответствующая «E». Вторая наиболее часто встречающаяся буква — это «T», а третья — «А».

Однако этот принцип работает только для длинных сообщений. Короткие просто не содержат в себе достаточно слов.

Шифр Виженера

10 популярных кодов и шифров 3

Представим, что есть таблица по типу той, что на картинке, и ключевое слово «CHAIR». Шифр Виженера использует принцип шифра Цезаря, только каждая буква меняется в соответствии с кодовым словом.

В нашем случае первая буква послания будет зашифрована согласно шифровальному алфавиту для первой буквы кодового слова «С», вторая буква — для «H», etc. Если послание длиннее кодового слова, то для (k*n+1)-ой буквы, где n — длина кодового слова, вновь будет использован алфавит для первой буквы кодового слова.

Чтобы расшифровать шифр Виженера, для начала угадывают длину кодового слова и применяют частотный анализ к каждой n-ной букве послания.

Попробуйте расшифровать эту фразу самостоятельно:

зюм иэлруй южжуглёнъ 

Подсказка длина кодового слова — 4.

Шифр Энигмы

Энигма — это машина, которая использовалась нацистами во времена Второй Мировой для шифрования сообщений.

Есть несколько колёс и клавиатура. На экране оператору показывалась буква, которой шифровалась соответствующая буква на клавиатуре. То, какой будет зашифрованная буква, зависело от начальной конфигурации колес.

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

Цифровые шифры

В отличие от шифровки текста алфавитом и символами, здесь используются цифры. Грубо говоря, шифр слова цифрами. Рассказываем о способах и о том, как расшифровать цифровой код.

Двоичный код

Текстовые данные вполне можно хранить и передавать в двоичном коде. В этом случае по таблице символов (чаще всего ASCII) каждое простое число из предыдущего шага сопоставляется с буквой: 01100001 = 97 = «a», 01100010 = 98 = «b», etc. При этом важно соблюдение регистра.

Расшифруйте следующее сообщение, в котором использована кириллица:

110100001001101011010000101111101101000010110100 

Шифр A1Z26

Алфавит по цифрам. Это простая подстановка, где каждая буква заменена её порядковым номером в алфавите. Только нижний регистр.

Попробуйте определить, что здесь написано:

15-6-2-16-13-30-26-16-11 17-18-10-14-6-18 

Шифрование публичным ключом

10 популярных кодов и шифров 4

Алгоритм шифрования, применяющийся сегодня буквально во всех компьютерных системах. Есть два ключа: открытый и секретный. Открытый ключ — это большое число, имеющее только два делителя, помимо единицы и самого себя. Эти два делителя являются секретным ключом, и при перемножении дают публичный ключ. Например, публичный ключ — это 1961, а секретный — 37 и 53.

Открытый ключ используется, чтобы зашифровать текст сообщения, а секретный — чтобы расшифровать текст.

Как-то RSA выделила 1000 $ в качестве приза тому, кто найдет два пятидесятизначных делителя числа:

1522605027922533360535618378132637429718068114961380688657908494580122963258952897654000350692006139 

Как расшифровать код или шифр?

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

  • Азбука Морзе
  • RSA (криптографический алгоритм с открытым ключом)
  • Двоичный код
  • Другие онлайн-дешифраторы

Шифрование текста. Буквы -> Цыфры. Нужно зашифровать текст так что бы в итоге получились цифры. подскажите способ.

есть множество способов, один из них немецкая шифровальная машина «Энигма», а так напишите прогу для компа, хотя бы на бейсике, только алгоритм шифрования не потеряйте, а то сами не расшифруете, но простое шифрование также просто дешифруется

замени каждую букву ее номером по алфавиту.. .

или сожми текст зипом и выведи каждый байт 4-мя цифрами.

Андванс ЧессПросветленный (31843) 11 лет назад
Идейно для одного языка хватит и 2 цифр, а для латиницы+кириллицы — 3 цифр.

Mikhail Levin Искусственный Интеллект (615251) Сколько надо цифр по уму определяется энтропией. Почему я и написал — сожми зипом:) Вопрос о экономии не стоял, стоял вопрос о шифровании — а это совсем другое. Штирлиц, сколько помню, записывал каждую букву 4-мя цифрами (шифр по книге). Кстати, для любого алгоритма шифрования крайне полезно сначала сжать текст хорошим алгоритмом сжатия, чтобы уничтожить статистические закономерности, и даже размазать буквы между битами. Например, есть методы сжатия, при котором вообще нет связи между входной буквой и битами на выходе. Я когда-то писал специальных архиватор, там все сжималось блоками, а каждый блок имел 4-байтный заголовок. Потом для экономии я решил сжать и заголовки отдельным потоком сжатия, и обнаружил, что средняя длина заголовка стала 1.4 бита!

Способов бесконечно много. Предложу один из них.

1. Определяется код первого символа в тексте и записывается в переменную ‘А’.
2. Число ‘А’ переводится из десятичной системы счисления в девятиричную.
3. Цифры в числе ‘А’ суммируются, а результат записывается в переменную ‘Б’.
4. Старший разряд числа ‘А’ удаляется из числа ‘А’, делая его длинну от 1-го до 3-х цифр.
5. В переменную ‘В’ записывается цифра, которая стоит на < (А+5)*Б >месте после запятой в числе ПИ.
6. Если в числе ‘А’ цифр меньше трех, тогда в начало числа ‘А’ добавляются девятки в таком колличестве, что бы сделать длинну числа ‘А’ равной трем.
7. В переменную ‘Г’ записывается цифра, стоящая на 3*В месте после запятой в числе е (то самое, которое равно 2,718281828459045235360. ).
8. Цифры в числе ‘А’ меняются местами следующим образом:
-первая цифра в числе становится на место цифры < Г1 mod 3 >;
-вторая цифра в числе становится на место ближайшей справа не занятой цифры;
-позицая третьей цифры однозначно определяется.
9. В переменную ‘Е’ добавляется (!) уже измененное число ‘А’ и следом за ним цифра Б.
10. Шаги 1-9 повторяются для каждого символа в тексте, в результате чего получим число, колличество цифр в котором в 4 раза больше, чем колличество символов в тексте, и по которому исходный текст однозначно восстанавливается.
11. Если получившееся число имеет один два или три нуля в начале, а цифра, содержащяя нули в начале не допустима, то все нули в начале можно заменить цифрой, значение которой равно колличеству нулей в начале. Если нулей нету, до тобавляется цифра 0.

АлександрЗнаток (264) 11 лет назад

В приведенном способе несколько ошибок. Я лишь хотел донести мысль о том, что возможности безграничны, и что вы сами можете придумать способ, не потратив на это много сил.

Как закодировать цифры в символы?

Есть данные, которые состоят из 12 цифр.
0-9
, (запятая)
— (минус)
Перед тем как передавать на сервер я хочу закодировать в A-Za-z0-9+символы.
Это уменьшит трафик.

Как можно это зашифровать и расшифровать?

Может есть библиотеки? желательно на JavaScript

  • Вопрос задан более трёх лет назад
  • 1895 просмотров

1 комментарий

Оценить 1 комментарий

А сколько у вас трафика, что нужно заботиться о сжатии цифр?
Решения вопроса 2

mace-ftl

Я знаю хитрый способ!
1) Берёшь и представляется первый набор символов как ЦИФРУ в 12-ти ричной системе (0-9+»,»+»-«)
2) Считаешь сколько у тебя СИМВОЛОВ в новой системе (A-Za-z0-9+символы)
3) Переводишь в систему с указанным основанием — ессно цифра будет КОРОЧЕ
4) Передаёшь, на той стороне всё обратно

П.С. при строках в 12 цифр это даст лучший результат, чем варианты со стандартными алгоритмами частотными стопудов

Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Deerenaros @Deerenaros
Программист, математик, задрот и даже чуть инженер

Окай. Делается это очень просто — мощность алфавита равняется 12ти, то есть нам потребуется 4 бита, чтобы его закодировать (хотим меньше — придётся обратится к хафманам). То есть свичём или ифами выбираем нужный квартет битов. Другими словами имеем отображение из символа в полубайт. Чтобы получать нормальные байты нужно разбивать на пары и складывать побитово результаты каждого символа с соответствующим смещением.

Есть способ попроще, возможно даже быстрее в скорости работы. Берём все пары [0-9\,\-] и строим по ним хэш-таблицу, или те же самые ифы-свичи. Таким образом мы отказались от мутных складываний, а если использовали хэш-таблицу это ещё и быстрее будет. То есть в результате у нас будет отображение пар небольшого алфавита в байт.

Что-то мы естественно потеряем — мощность алфавита не кратна двойке — так что если требуется минимизировать трафик, возможно стоит сразу поточно жать в gzip, без предварительных манипуляций.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *