В определённый момент, стало мне интересно, почему на Пикабу нельзя отправлять личные сообщения. Погуглив вопрос, нашёл фразу типа "чтобы сайт не превратился в очередную дурацкую соц. сеть".
Но что делать, если всё-таки нужно как-то обратиться к определённому пользователю, причём так, чтобы другие не могли это прочитать?
Далее, немного теории. Если вам это читать утомительно, можете сразу переходить к практике.
Самый простой из предложенных вариантов - зайти в какой-нибудь из его старых постов и написать там комментарий. Только проблема в том, что посты так или иначе остаются публичными, и комментарии в них всё ещё может читать кто угодно.
Окау. Более надёжный и вполне рабочий вариант - запросить почту или какую-нибудь ещё контактную информацию. Но тогда ею сможет воспользоваться также любой пользователь (грубо говоря, я, например, прошу Васю Пупкина скинуть мне на почту информацию о том, как его найти в городе Мухосранске, мою почту видит злоумышленник, представляется Васей и присылает мне адрес бара Blue Cluster... Ну и т.д. по сценарию).
Другой вариант - зашифровать сообщение (правилами сайта на данный момент не запрещено отправлять зашифрованные сообщения как таковые).
И тут уже нужно немного теории. Шифрование бывает симметричным и асимметричным. Первое нам сразу же не подходит, т.к. сообщение зашифровывается и расшифровывается одним и тем же ключом, который должен быть и у отправителя, и у получателя, но, при этом, никто больше его знать не должен. Ну и обменяться таким ключом по открытому каналу (коим являются комментарии под постами) просто так не получится.
А вот асимметричное шифрование - штука более интересная. Там сообщение зашифровывается с помощью одного ключа (который называется публичным), а расшифровывается уже другим (приватным). Основывается это всё на односторонних функциях и всякой сложной математике, здесь я не буду об этом рассказывать, т.к. информация об этом есть в свободных источниках, и лучше, чем там, я вам её рассказать не смогу. Зато наврать или забыть что-нибудь - всегда пожалуйста.
В общем, давным-давно, трое товарищей с фамилиями Rivest, Shamir и Adleman, придумали такой алгоритм шифрования и назвали его первыми буквами своих фамилий: RSA. Алгоритм оказался достаточно криптостойким и используется до сих пор. Но нам важно то, что сейчас имеются онлайн сервисы, позволяющие шифровать ваш текст этим алгоритмом прямо в браузере.
Теперь практика. Чтобы иметь возможность получить зашифрованное сообщение, нам нужна пара ключей: публичного и приватного. Лучше хранить их где-нибудь в надёжном месте. Соответственно, если хотим получить сообщение, просто пишем что-то типа: "Я хочу получить сообщение, вот мой публичный ключ: ...".
Если же мы хотим отправить сообщение определённому пользователю, пишем ему что-то типа: "Эй, дружище, у меня есть для тебя важная информация, дай мне, пожалуйста, свой публичный ключ!"
Далее, отправитель шифрует сообщение полученным публичным ключом, передаёт его по открытому каналу (т.е. в комментарии). Получатель же расшифровывает его своим приватным ключом.
Нужные сервисы гуглятся по запросу "RSA онлайн". Они позволяют генерировать пары ключей, а также шифровать и расшифровывать сообщения с их помощью. Но есть один тонкий момент. Реализации могут слегка отличаться друг от друга. И кое-где могут всплывать разные косяки.
Например, первая ссылка в гугле почему-то у меня не работала нормально. При копировании ключей туда-сюда, они как-то портились, и, вставив только что сгенерированную пару ключей на новую страницу, я уже не мог ничего расшифровать.
Зато следующий сервис уже работал более стабильно. Даже удалось с его помощью обменяться парой сообщений с добрым человеком. Поэтому на его примере и разберём, что и как делать. Хотя, по факту, тем, кто знаком с криптографией и умеет читать интерфейс, всё и так должно быть ясно.
Здесь у нас генератор ключей. Ведь нельзя же просто взять две рандомные строки и объявить их своими ключами? В выпадающем поле выбирается размер ключа. Чем он больше, тем более стойким будет шифр (каждый дополнительный бит увеличивает сложность полного перебора в 2 раза). Судя по википедии, даже для подбора 1024-битного ключа понадобится довольно много времени... Но, если я ошибаюсь, всегда можно взять ключ побольше.
Короче, выбираем размер ключа, нажимаем кнопку "Generate", и копируем содержание полей Public Key и Private Key куда-нибудь в надёжное место. Для примера, я сгенерировал пару ключей, которые буду использовать в посте. Приватный ключ получается более длинным, чем публичный.
В первое поле вводим ваш текст, а во второе - публичный ключ получателя (следим, чтобы с ключом не скопировалось ничего лишнего, типа символа переноса строки). Далее зачем-то нам предоставляется выбор того, какой ключ мы ввели (зачем это нужно, я не понимаю, т.к. при шифровании используется только публчный ключ) и тип шифра. Думаю, ничего страшного, если мы ничего не будем трогать, а просто нажмём кнопку и скопируем из третьего поля полученный текст. Ещё один нюанс - длина сообщения не должна превышать 117 байт. Но это не большая проблема, т.к. этого более чем достаточно, чтобы передать какую-нибудь коротенькую ссылку на текст, изображение или страничку в ВК.
Расшифровка.
Сначала вставляем зашифрованное сообщение, потом свой длинный приватный ключ. Тип ключа и шифра не трогаем. И нажимаем кнопочку. Получаем исходный текст. Вот и вся практика.
В принципе, ничего сложного, хотя это тот ещё костыль. Но из спортивного интереса или при крайней необходимости, это вполне рабочий вариант. Он так или иначе защитит ваши сообщения ото всех, кто не знает либо самого сообщения, либо приватного ключа. По крайней мере, если никто не будет раскрывать приватные ключи или использовать слишком короткие. Ну или пока у каждого желающего дома не будет квантового компьютера, который, используя свои квантовые алгоритмы, сможет вычислять приватный ключ за приемлемое время.