vak: (Улыбка)
[personal profile] vak
(https://snob.ru/selected/entry/109929)

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

Каждый символ из этой последовательности заменяется на его числовой код. Если в названии компании, которое нужно зашифровать, есть цифры, они не меняются. Вместо букв же пишутся их номера в алфавите, к которым прибавили цифру девять. Таким образом получаем: а — 10, ю — 41, и — 19, к — 21, р — 27, р — 27, ч — 34, а — 10, т — 29, ь — 39, ч — 34, е — 15, е — 15, а — 10, м — 23, в — 12, й — 20.

Для каждого блока математики вычислили свой набор коэффициентов (все коэффициенты есть в распоряжении редакции). Для первого числа первого блока коэффициент — 38, для второго — 1, для третьего — 4, для четвертого — снова 4. Для первого числа второго блока коэффициент — 9, для второго — 2, для третьего — 2, для четвертого — 5. Для первого числа третьего блока коэффициент — 36, для второго — 3, для третьего — 8. Для первого числа четвертого блока — 0, для второго — 7, для третьего — 14. Для первого числа последнего блока — 38, для второго — 1, для третьего — 1.

Каждая цифра из блока умножается на ее коэффициент. Произведения складываются. Для первого блока расчет будет такой: 10*38 + 41*1 + 19*4 + 21*4 = 581.

Результат расчета — в данном случае 581 – делится на число 43 (сумма цифр и букв в русском алфавите: 10+33=43). 581 делится на 43 с остатком 22: 581 = 43*13 + 22. Остаток — 22 — это код символа, который будет в первом исходном коде имени. По ранее указанному правилу, чтобы получить букву из цифры, вычитаем 9 из 22: 22 – 9 = 13. Под 13-м номером в русском алфавите следует буква «Л». Она и будет первой буквой кода. По такому же алгоритму вычисляются кодовые символы и в остальных блоках.

С помощью программы «Сноб» закодировал имена Владимир Владимирович Путин и Джон Эддардович Сноу. Программа зашифровала имя российского президента как «чщ2з1», а героя телесериала «Игра престолов» как «бтнйд».

Date: 2016-06-21 19:20 (UTC)
From: [identity profile] kondybas.livejournal.com
Хеш по MD5 с пеной у рта бьется в корчах.

Date: 2016-06-21 19:33 (UTC)
From: [identity profile] kondybas.livejournal.com
А мне сразу вспомнилась книга "Die Sunden der Vater" Людвига Гангофера.

Date: 2016-06-21 19:53 (UTC)
From: [identity profile] kondybas.livejournal.com
Вообще, мне кажется, что кто-то гаденько хихикал и нервно елозил ногами под столом, формулируя этот алгоритм. Ну, или расценки были выкачены за "зубодробительность" согласно ГОСТу.

Забороть частотку русского алфавита и перейти к равномерному распределению в хешах можно и без такого... эээ... каминг-аута.

Date: 2016-06-21 19:56 (UTC)
From: [identity profile] spamsink.livejournal.com
Интересно, что 43^5 - примерно 147 миллионов. Если бы у всех жителей России были разные имена и - чудо - не случилось бы коллизий, как раз на всех бы хватило c минимальным запасом.
Не совсем ясно, что делать, если в ФИО больше 25 букв, как у какой-нибудь банальной Александры Александровны Крестовоздвиженской.

Ну и сразу приходит в голову математическая задачка на подбор коэффициентов для получения из очевидного исходного имени очевидного результата из пяти букв.

Date: 2016-06-21 20:02 (UTC)
From: [identity profile] kondybas.livejournal.com
"..Не совсем ясно, что делать, если в ФИО больше 25 букв.."

Вероятно, позиционные коэффициенты циклически применяются, хуже от этого уж точно не будет.

Date: 2016-06-21 20:13 (UTC)
From: [identity profile] spamsink.livejournal.com
Вероятно. Но удивляет наличие нулевого коэффициента (4-я буква имени).

Date: 2016-06-21 20:16 (UTC)
From: [identity profile] kondybas.livejournal.com
На общем фоне это выглядит свежо и оригинально.

Date: 2016-06-21 20:27 (UTC)
From: [identity profile] kondybas.livejournal.com
Упал и умер

Date: 2016-06-21 21:15 (UTC)
fizzik: (дельфин)
From: [personal profile] fizzik
Однако есть же еще нерезиденты! Вроде их недвижимость пока еще не национализировали :)

Date: 2016-06-21 23:14 (UTC)
From: [identity profile] proxfessor.livejournal.com
АРТЕМ или всё-таки АРТЁМ? Судя по коду буквы И, Ё считается отдельной буквой. Интересно, что Ё в приведённом примере - как раз тринадцатая буква с коэффициентом 0.
Edited Date: 2016-06-21 23:31 (UTC)

Date: 2016-06-22 02:27 (UTC)
From: [identity profile] spamsink.livejournal.com
Почему тринадцатая, когда она четвёртая?

Date: 2016-06-22 03:23 (UTC)
From: [identity profile] proxfessor.livejournal.com
В смысле умножается на 13-й коэффициент.

Date: 2016-06-22 03:27 (UTC)
From: [identity profile] spamsink.livejournal.com
Он 13-й чисто случайно (да и то 12-й). На самом деле этот коэффициент 1-й в четвертой группе коэффициентов, а мощность группы может быть как конечной, если коэффициенты определены таблично, так и потенциально бесконечной, если они определены функцией.
Edited Date: 2016-06-22 03:28 (UTC)

Date: 2016-06-22 03:28 (UTC)
From: [identity profile] proxfessor.livejournal.com
Да. Но интересна не его позиция, а тот факт, что он оказался равен 0.

Date: 2016-06-22 03:32 (UTC)
From: [identity profile] spamsink.livejournal.com
Возможно, это артефакт реверс-инжиниринга алгоритма. Скажем, если взять алгоритм Целлера (https://en.wikipedia.org/wiki/Zeller's_congruence) как чёрный ящик, то в нем не будет никакого массива магических констант, в то время как его реверс-инжиниринг ("ой, на что же эта функция похожа? ба, да она день недели по дате считает: ну так мы знаем, как это делается...") будет пользоваться таким массивом.

Date: 2016-06-22 03:36 (UTC)
From: [identity profile] proxfessor.livejournal.com
"Возможно, это артефакт реверс-инжиниринга алгоритма." - Возможно, связанный с тем, что Ё заменили на Е?

Date: 2016-06-22 03:38 (UTC)
From: [identity profile] spamsink.livejournal.com
http://ramlamyammambam.livejournal.com/402370.html?thread=3944898#t3944898

Date: 2016-06-22 03:39 (UTC)
From: [identity profile] proxfessor.livejournal.com
Логично.

Date: 2016-06-21 23:39 (UTC)
From: [identity profile] proxfessor.livejournal.com
Что-то я нервничаю. "С помощью программы «Сноб» закодировал имена Владимир Владимирович Путин и Джон Эддардович Сноу". Но в имени Путина - 25 символов, а число известных коэффициентов - всего 17, по числу символов в именах обеих чаек. Недостающие коэффициенты невозможно определить, не располагая хэшами имен длиной как минимум из 25 символов.

Date: 2016-06-22 03:37 (UTC)
From: [identity profile] spamsink.livejournal.com
На самом деле всё это херня. Имеем 10 уравнений (по уравнению на символ в известных примерах, которых всего два, по количеству братьев), в то время как искомых переменных (коэффициентов) гораздо больше двух дюжин. Таких формул можно хоть сколько нарыть, даже в предположении, что алгоритм действительно такой.

Date: 2016-07-03 00:10 (UTC)
From: [identity profile] Лев Горенштейн (from livejournal.com)
Особый +1 за "делится на число 43 (сумма цифр и букв в русском алфавите: 10+33=43)" ;-)