Допустим, вы хотите опубликовать пост анонимно, а потом, если вдруг он станет популярным и соберёт много плюсиков, — раскрыть своё имя публике. Но до поры до времени не раскрывать его.
Но как это сделать? Если бы анонимные посты можно было редактировать, всё было бы просто — вы бы просто отредактировали пост, добавив в него свою подпись. Но это невозможно.
Что ж, подписать своё творение можно и в комментарии:
Я, такой-то, — автор.
Но ведь так может сделать кто угодно, и это тоже не сработает.
Итак, задача следующая: как надёжно доказать, что автор — вы, притом сделать это не в момент публикации поста, а спустя некоторое время.
Добро пожаловать в мир криптографии!
Вариант 1. md5(ник)
Допустим, мой ник — "Vasya". Я беру md5-хеш от этого ника:
md5("Vasya") = "96932f68a34ac08a6c92ed8db20d2ee3"
Чтобы это сделать, вбиваем в гугл "md5 hash online", и находим, например, вот такой сервис: https://codebeautify.org/md5-hash-generator
Тогда, я, оставаясь анонимом, могу подписать свой пост так:
md5-хеш моего ника — "96932f68a34ac08a6c92ed8db20d2ee3".
И, поскольку md5-хеширование — необратимая операция, то есть, нельзя взять md5-хеш и "расшифровать", то всё, что нужно сделать автору Васе, когда он решит раскрыть себя, это дать ссылку на страничку, доказывающую, что хеш его ника совпадает с тем хешем, которым подписался аноним.
А действительно ли нельзя "расшифровать" md5? Оказывается, в некоторых случаях можно! Просто погуглите "96932f68a34ac08a6c92ed8db20d2ee3" — и вы наверняка найдёте, что это md5-хеш строки "Vasya". Дело в том, что для многих популярных сочетаний символов (а Vasya, согласитесь, довольно популярно) md5-хеши заранее расчитаны, лежат на специальных сайтах и доступны для поиска.
"Это не про мой ник!", скажете вы. Да, действительно, если ваш ник, скажем, "EduNaHromoyLoshadi", то вряд ли для него существует предрассчитанный md5. Но посчитать md5-хеши ников всех пользователей Пикабу — дело времени, потому что эти все ники лежат в открытом доступе и их всего-то каких-нибудь пару миллионов. Так что длина и сложность ника ничего не решает. А уж если автор засветится в комментарии к собственному анонимному посту, то и подавно.
Вариант 2. Приватная соль
Как раз для того, чтобы защитить базы данных паролей сайтов (а они также хранятся в хешированном виде) от перебора известных хешей, придумали технику по дназвание "соль". Вкратце, мы теперь будем брать хеш не от самого ника, а от случайной строки, склеенной с этим ником. Допустим мы выбрали соль, равную строке "26p4we52". Тогда хеш будет таким:
md5(соль + ник) = md5("26p4we52Vasya") = "5c2043e965fb7389c27d537a90bae5e4"
Этот хеш уже нигде не гуглится. И, не зная соли, по списку известных ников его тоже не подобрать!
Аноним по-прежнему может подписать свой пост так:
md5-хеш моего ника с солью — "5c2043e965fb7389c27d537a90bae5e4".
и не сообщать никому соль.
Потом, когда он пожелает раскрыть себя, он уже не анонимно пишет комментарий:
Vasya: Соль — 26p4we52. Хеш 5c2043e965fb7389c27d537a90bae5e4. Проверяйте: https://codebeautify.org/md5-hash-generator?input=26p4we52Vasya
Заключение
Вот так-то, ребята! Если этот пост наберёт хотя бы десять плюсиков, я раскрою себя, а пока что:
Подпись: fe9eb6933304bae261107b03458d0471