Аноны, есть конкретный, но сложный вопрос.
Сразу скажу, что хочу реализовать шифр Вернама
с его операцией XOR - для алфавита произвольной длины...
Итак, суть вопроса в следующем:
1. Есть алфавит длиной 2^N символов, включая нулевой символ.
2. При N = 5, 2^5 = 32, допустим каких-то 32 символа.
3. Алфавит представляет из себя массив символов ["А", "B", "C"... и т. д. ..., "Z"] - 26 символов.
4. Код каждого символа идёт по порядку, от нуля включительно до (2^N)-1. Поэтому, работать будем с кодами.
Теперь, делаем XOR всех кодов между собой и получаем таблицу,
в которой равновероятно пробегаются все значения - и в строках и столбцах, ни разу не повторяясь при этом.
Эта таблица XOR, она - подобна таблице Виженера, но значения здесь - идут крест накрекст, блоками.
Основная фича в том, что ни в строках, ни в столбцах вы не найдёте два значения.
Теперь, берём какой-нибудь другой алфавит, с количеством символов отличным от 2^N символов
Пусть это будет 26 символов английского алфавита, например.
Делаем то же самое - получаем ту же таблицу, но урезанную.
Внутри, есть значения больше 26, в частности - 31.
Ну и сам вопрос. Возможно ли сделать так, чтобы числа внутри таблицы - не повторялись?
Ну и соответственно, если да, то как, а если нет - то по какой причине?
P.S. Попробовал ещё XNOR табличку сгенерировать, там вроде-бы ещё легче,
но формулу я так и не смог подобрать...
Сразу скажу, что хочу реализовать шифр Вернама
с его операцией XOR - для алфавита произвольной длины...
Итак, суть вопроса в следующем:
1. Есть алфавит длиной 2^N символов, включая нулевой символ.
2. При N = 5, 2^5 = 32, допустим каких-то 32 символа.
3. Алфавит представляет из себя массив символов ["А", "B", "C"... и т. д. ..., "Z"] - 26 символов.
4. Код каждого символа идёт по порядку, от нуля включительно до (2^N)-1. Поэтому, работать будем с кодами.
Теперь, делаем XOR всех кодов между собой и получаем таблицу,
в которой равновероятно пробегаются все значения - и в строках и столбцах, ни разу не повторяясь при этом.
Эта таблица XOR, она - подобна таблице Виженера, но значения здесь - идут крест накрекст, блоками.
Основная фича в том, что ни в строках, ни в столбцах вы не найдёте два значения.
Теперь, берём какой-нибудь другой алфавит, с количеством символов отличным от 2^N символов
Пусть это будет 26 символов английского алфавита, например.
Делаем то же самое - получаем ту же таблицу, но урезанную.
Внутри, есть значения больше 26, в частности - 31.
Ну и сам вопрос. Возможно ли сделать так, чтобы числа внутри таблицы - не повторялись?
Ну и соответственно, если да, то как, а если нет - то по какой причине?
P.S. Попробовал ещё XNOR табличку сгенерировать, там вроде-бы ещё легче,
но формулу я так и не смог подобрать...
>>53015 (OP)
Хуй там, всё равно оно повторяется.
Поэтому, просто вставил спецсимвол.
Ткните вот здесь - в опцию Vernam: https://username1565.github.io/isaacCSPRNG/Enigma+7ciphers+PRNG.html
Хуй там, всё равно оно повторяется.
Поэтому, просто вставил спецсимвол.
Ткните вот здесь - в опцию Vernam: https://username1565.github.io/isaacCSPRNG/Enigma+7ciphers+PRNG.html