vak: (Улыбка)
Serge Vakulenko ([personal profile] vak) wrote2016-06-21 12:15 pm

Алгоритм ЛСДУ3

(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», а героя телесериала «Игра престолов» как «бтнйд».

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

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

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

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

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

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

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

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

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

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

[identity profile] kondybas.livejournal.com 2016-06-21 08:27 pm (UTC)(link)
Упал и умер
fizzik: (дельфин)

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

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

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

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

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

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

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

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

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

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

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

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

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