|
23 / 20 / 4
Регистрация: 15.12.2018
Сообщений: 152
|
|||||||||||
Взломать детский шифр17.12.2018, 17:21. Показов 5422. Ответов 58
Метки cryptandcod (Все метки)
Всем доброго времени суток, товарищи программеры. Перед тем, как приступить непосредственно к делу, мне хотелось бы поведать небольшую предысторию. Учусь в общеобразовательной школе в 11-м классе (физмат). Со мной есть еще несколько типов, с которыми мы по фанчику постепенно учим криптографию и называем друг друга нумерологами
Мы решили составить свой шифр (на программной основе), который имел бы достаточную стойкость (на уровне 11 класса). (ДЛЯ ЕДКИХ - Я ПРЕКРАСНО ПОНИМАЮ, ЧТО НЕ НАДО ПРИДУМЫВАТЬ НИЧЕГО ИЗ ОБЛАСТИ КРИПТОГРАФИИ, ПОКА У ТЕБЯ НЕТ ХОТЯ БЫ ДОКТОРСКОЙ СТЕПЕНИ ПО МАТЕМАТИКЕ) Но суть в том, чтобы придумать самим, а не использовать уже готовые решения (что-то вроде развития мозгов). Это задание решили отдать мне, т.к. я представляю, как работает сеть Фейстеля. Что касается ключа, было решено, что он должен обладать небольшой длиной, но все же достаточной для того, чтобы малолетки его не перебрали. В качестве идеального варианта взяли 64 бита. Дальше я уже додумывал сам. Это должна быть функция, желательно вызываемая из dll-библиотеки. Шифровать она должна линейный массив байтов, т.к. любой тип данных можно представить массивом байтов. Выдавать для удобства тоже желательно массив байтов. Ключ, как ни странно тоже проще задавать массивом байтов. И для приличия ввел нечто напоминающее iv - массив байтов , равный размеру блока, который тупо ксорится с первым блоком, публикуется открыто и не дает возможности понять, что одним и тем же ключом 2 раза шифровался один и тот же открытый текст. Длина блока 8 байт (как у ключа), шифр целиком представляет собой сеть Фейстеля "в лоб", и с этими мыслями приступил к кодингу (на паскале). Получил следующий код:
- скорость на моем пентиуме порядка 18 Кб/с в обе стороны, что позволяет шифровать текст адекватного размера, но и фотку сожрать тоже может, однако придется подождать - время обработки данных как функция от длины массива возрастает +- линейно, как и должно быть Для самой непосредственной реализации шифрования начеркал такой код (особо не заморачивался):
- шифротекст архиватор не сжимает вообще (так я проверил его на избыточность) - в среднем всех байтов в шифротексте примерно поровну (нормальное распределение) - после шифрования размер массива не увеличивается больше, чем на длину блока (просто разметка дополняет открытый текст нулями до длины, кратной 8, а при расшифровке их выбрасывает) - изменение хотя бы одного байта шифротекста в любой позиции губит весь открытый текст при расшифровке (избыточность каждого байта открытого текста перераспределяется на весь шифротекст) - изменение хотя бы одного байта ключа, как ни странно тоже сказывается плачевноЭтот шифр приняли. Исходник служит одновременно релизом и описанием. Если релиз написан нерационально, прошу не пинать, т.к. писал с нуля и не исключаю, что что-то сделал криво (багов там вроде нет). Пока никто из наших его не взломал. Лично я тоже не представляю, как это можно сделать на практике, и пишу это все для того, чтобы узнать, что по этому поводу скажут прошаренные бородатые дядьки-программеры. Для того, чтобы не вызывать каких-то абстрактных рассуждений, предлагаю дешифровать конкретный файл (зашифрованная фотография .jpg - файл binarnik.bin - прикрепляю в архиве вместе со всеми исходниками). Если кому-то надо, там и SHA256 для расшифрованного файла. iv тоже прилагается. И на всякий случай, фотки в интернете нету - она отснята моим фотоаппаратом и после дешифровки, разумеется, становится общественным достоянием. На адекватные вопросы обязательно отвечу. Всем заранее спасибо.
0
|
|||||||||||
| 17.12.2018, 17:21 | |
|
Ответы с готовыми решениями:
58
Взломать шифр двойной перестановки Взломать шифр Виженера методом частотного анализа |
|
461 / 201 / 80
Регистрация: 14.12.2017
Сообщений: 433
|
|||||||
| 17.12.2018, 21:24 | |||||||
|
Для начала, на будущее:
1. если хотите чтобы ваш алгоритм смотрели, рисуйте понятные диаграммы/рисунки/схемы. К примеру http://upload.wikimedia.org/wi... iagram.png 2. Далее описывайте что и зачем вы использовали. А просто разбирать программу - не будет никто. Когда мы росли, был еще Союз, информации было 0. Буквально 0. Даже шифра Виженера не знали. Все что видели в фильмах - Штирлица))) Вот если бы тогда кто нибудь создавал подобный шифр - я бы понял и оценил. А сейчас 21й век на дворе. У вас же под рукой интернет. Практически неограниченные возможности читать описания алгоритмов в сети, столько книг, что читай зачитаешся. И что вы сделали? Вместо того что бы учиться, прочитали о сети Фейстеля и все. А ну да, еще прочитали https://ru.wikipedia.org/wiki/... тный_метод и соорудили формулы:
А вот ЭТО что выше никуда не годится в принципе. Добавлено через 6 минут Хотя, кого я обманываю? Современная молодежь и читать)))) Это не совместимые понятия. Ладно, может хоть абзац осилите:
1
|
|||||||
|
23 / 20 / 4
Регистрация: 15.12.2018
Сообщений: 152
|
|||||||||||||||||||||
| 18.12.2018, 14:47 [ТС] | |||||||||||||||||||||
|
Описание и схему постараюсь составить, не факт, что очень понятно, но попробую.
Добавлено через 5 часов 3 минуты Мной уже писалось выше: Пояснения к коду буду выкладывать по кусочкам.
0
|
|||||||||||||||||||||
|
461 / 201 / 80
Регистрация: 14.12.2017
Сообщений: 433
|
|
| 18.12.2018, 20:40 | |
|
Бегло посмотрел этот код. Обозначения взяты наобум, а,б,х переприсваиваются по нескольку раз непонятно зачем.
a:array of byte - так понял входящий открытый текст IVT(a, iv); procedure IVT(var x:array [,] of byte; iv:array of byte); - добавления ВИ, простой ксор x[i, 0] := (x[i, 0] xor iv[i]); for var i:integer := 0 to 7 do begin a[i] := Key[i]; s[i] := 0; - запомните это end; RoundKey(a, s); function RoundKey(var key:array of byte; y:array of byte; usingReverse, first:boolean):array of longword; a->key s->y key[i] := (key[i] xor y[i]); - ключ ксор s/y тоесть с 0, зачем? Ну да ладно, поехали дальше b[i * 2 + ci] := a[ci] FLW(b[ci], b[i]) Result := BigIntToUint32(((a + 723319) * (b + 56311477) + 5119) mod 527845764689); По сути из ключа 8 байт делают псведослучайную последовательность, с помощью ГПСЧ, который описан выше в б теперь ключ. По сути этот ГПСЧ и обеспечивает "случайное" распределение, которые проходит тесты. FeistelNetwork(x, b, i); - судя по названию и есть собственно сеть Фейстеля procedure FeistelNetwork(var x:array [,] of byte; RKey:array of longword; index:integer; first:boolean); g := FFN1(a, RKey[i]) - собственно функция b := (g xor b); - ксор одного блока со вторым, обозначения конечно ужас. Ну да ладно Смотрим саму функцию, по сути главный секрет алгоритма: function FFN1(x, y:longword):longword; begin var a:System.Numerics.BigInteger := (x + 2 * y + 79813); Result := BigIntToUint32((a * a * a + a + 21379) mod 168248124743); end; function FFN2(x, y:longword):longword; begin var a:System.Numerics.BigInteger := (x + 3 * y + 4159); Result := BigIntToUint32((a * a * a * a * a + a * a + 161233) mod 2939384514263); end; Тут опять обозначения от балды: a -> x Rkey -> y обозначим x = P y = K перепишем 2-ю функцию, там больше умножений, она же круче ![]() z := (P + 3 * K + 4159); Result := (z * z * z * z * z + z * z + 161233) mod 2939384514263; Тоесть Z^5 ![]() Cчитаем: P K Z Result 0 1 4162 2810603926299 (целых 13! цифр, ух как круто ) 1 1 4163 1806928162546 2 1 4164 2246195615177 3 1 4165 1190061854153 4 1 4166 1578951977161 5 1 4167 474522553842 !!! 6 1 4168 817199681051 !!! 7 1 4169 2608025442884 !!! 8 1 4170 2908657908118 !!! 9 1 4171 1720140160785 !!! 0 2 4165 1190061854153 1 2 4166 1578951977161 2 2 4167 474522553842 !!! 3 2 4168 817199681051 !!! 4 2 4169 2608025442884 !!! 5 2 4170 2908657908118 !!! 6 2 4171 1720140160785 !!! 7 2 4172 1982900299660 8 2 4173 758597894704 9 2 4174 987662045908 упс смотрим почему же так: отбрасываем лишнее: z := (P + 3 * K + 4159); z := (P1 + 3 * K1 + 4159); z := (P2 + 3 * K2 + 4159); P1 + 3 * K1 + 4159 = P2 + 3 * K2 + 4159 P1 + 3 * K1 = P2 + 3 * K2 P1 - P2 = 3 * K2 - 3 * K1 P1 - P2 = 3 * ( K2 - K1 ) Что позволяет составить таблицы: P1 P2 K2 K1 4 1 10 9 5 2 11 10 6 3 12 11 7 4 13 12 8 5 14 13 9 6 15 14 10 7 16 15 11 8 17 16 12 9 18 17 .... проверяем P K Z Result 4 9 4190 347332625697 1 10 4190 347332625697 Следовательно фукнция порождает кучу повторений. А, и первая функция не лучше: var a:System.Numerics.BigInteger := (x + 2 * y + 79813); Result := BigIntToUint32((a * a * a + a + 21379) mod 168248124743); P K Z Result 0 1 79815 10374936077 1 1 79816 29486478199 2 1 79817 48598499217 !!! --- 3 1 79818 67710999137 !!! 4 1 79819 86823977965 !!! 5 1 79820 105937435707 !!! 6 1 79821 125051372369 !!! 7 1 79822 144165787957 !!! 8 1 79823 163280682477 !!! 9 1 79824 14147931192 !!! 0 2 79817 48598499217 !!! --- 1 2 79818 67710999137 !!! 2 2 79819 86823977965 !!! 3 2 79820 105937435707 !!! 4 2 79821 125051372369 !!! 5 2 79822 144165787957 !!! 6 2 79823 163280682477 !!! 7 2 79824 14147931192 !!! 8 2 79825 33263783594 9 2 79826 52380114946 Тоесть что ключ 1 что ключ 2 - результат будет практически тот же. А учитывая что в предложенном алгоритме нету и зачатка полезных идей, шифр улучшению не подлежит в принципе.
1
|
|
|
23 / 20 / 4
Регистрация: 15.12.2018
Сообщений: 152
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 19.12.2018, 18:06 [ТС] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
ОПИСАНИЕ АЛГОРИТМА.
Приступим: ================ ПУНКТ 1 ================
Эта функция первой обрабатывает массив, подлежащий шифрованию. Она создает двумерный массив такого размера, чтобы в него влезли все подающиеся на вход байты + 1 разметочный, необходимый для того, чтобы при расшифровке вернуть все как было. При этом одна из размерностей массива имеет фиксированную длину - 8 байт, а вторая неограничена. Последний элемент
ЗАЧЕМ ВВЕДЕНА: Представляет произвольный массив незашифрованных данных к виду 8 X N, который подходит для дальнейших преобразований. ================ ПУНКТ 2 ================
Выпоняет действия, обратные функции
ЗАЧЕМ ВВЕДЕНА: Позволяет преобразовать двумерный массив 8 X N, полученный при расшифровке, к линейному виду, учтя разметку. ================ ПУНКТ 3 ================
Выполняет действия, аналогичные функции
ЗАЧЕМ ВВЕДЕНА: Преобразует двумерный зашифрованный массив к линейному виду, что упрощает работу с шифротекстом - в таком виде его удобно записать на низком уровне прямо в файл. ================ ПУНКТ 4 ================
Как и в предыдущем случае работа аналогична уже существующей функции
ЗАЧЕМ ВВЕДЕНА: Преобразует линейный массив шифротекста к виду 8 X N, такой массив пригоден для дальнейшей расшифровки. ================ ПУНКТ 5 ================
Тупо ксорит первый блок (ячейку из 8 байтов в одной размерности) с заданным массивом из 8 байтов. Если не ошибаюсь, что-то похожее есть во многих сииметричных алгоритмах и называется, кажется, вектор инициализации. Суть состоит в том, что если много раз шифровать один и тот же массив из байтов одним и тем же ключом, но каждый раз брать разные iv, то за счет лавинного эффекта не будет возможности догадаться, что шифровался один и тот же массив, разве что по его размеру. В принципе если ты не собираешься один и тот же файл шифровать по 10 раз, iv можно заполнять одними нулями. iv публикуется открыто вместе с шифротекстом. Обратной функции к ней нет, точнее это она сама. ЗАЧЕМ ВВЕДЕНА: По фанчику. ================ ПУНКТ 6 ================
Если чисто с математической точки зрения - делит поступившее длинное целое по модулю на 2^32, а полученный результат раскладывает в массив из 4 байтов (log256(2^32) = 4), т.е. фактически переводит в 256-разрядную систему исчисления. Проще кода придумать не смог, т.к. результат деления по модулю System.Numerics.BigInteger на любое число, пусть даже на 2, все равно является типом System.Numerics.BigInteger . ЗАЧЕМ ВВЕДЕНА: Позволяет запихнуть System.Numerics.BigInteger в массив из 4 байтов. ================ ПУНКТ 7 ================
С точки зрения математики тут все еще проще - делит поступившее длинное целое по модулю на 2^32. ЗАЧЕМ ВВЕДЕНА: аналогично функции
================ ПУНКТ 8 ================
Раскладывает 32-битное беззнаковое число в 256-разрядную систему исчисления. ЗАЧЕМ ВВЕДЕНА: Обеспечивает работу сети Фейстеля - процедуры
================ ПУНКТ 9 ================ 2 функции:
Из 2 32-битных чисел получают 1 по несложной, однако все же нелинейной зависимости. ЗАЧЕМ ВВЕДЕНЫ: Обеспечивают работу сети Фейстеля - процедуры
================ ПУНКТ 10 ================
Простая сеть Фейстеля. Параметру first отдают true, когда массив обходится в одну сторону, и false, когда в обратную. ЗАЧЕМ ВВЕДЕНА: Основная процедура, обеспечивающая работу алгоритма. ================ ПУНКТ 11 ================ 2 функции:
Обеспечивают работу функции
================ ПУНКТ 12 ================
Позволяет из 8 байт на входе создать массив из 8 32-битных беззнаковых чисел. При этом меняется сам параметр key, т.к. он ксорится с заданным массивом y. В НАЧАЛЕ МАССИВ y ЗАПОЛНЕН ОДНИМИ НУЛЯМИ, но потом заполняется совершенно разными значениями. Еще введен параметр usingReverse, т.к. при расшифровке ключ в сеть Фейстеля надо подставлять в обратном порядке. ЗАЧЕМ ВВЕДЕНА: Позволяет увеличить размер ключа. ================ ПУНКТ 13 ================
Преобразует 1 блок данных под номером i в массиве x. Параметр a - ключ, параметр s - с чем его ксорить, mode1 - шифрование/расшифровка, mode2 - первый/второй обход. ЗАЧЕМ ВВЕДЕНА: Непосредственно обрабатывает блоки данных. ================ ПУНКТ 14 ================
Применяет функцию
ЗАЧЕМ ВВЕДЕНА: Фактически отвечает непосредственно за шифрование. ================ ПУНКТ 15 ================
Заключающая функция, объединяющая все предыдущие в работоспособный алгоритм. ЗАЧЕМ ВВЕДЕНА: Представляет непосредственную реализацию алгоритма шифрования. Добавлено через 20 минут тупо взглянуть на объявления этих 4 замечательных функций:
(2^32) / (2^32 * 2^32) = 1/ (2^32) = 1 / 4294967296 и блестяще заключить, что В ЛУЧШЕМ СЛУЧАЕ повторений не будет иметь только 1 ключ из..... 4 МИЛЛИАРДОВ Я НЕ ПРОШУ ЕГО УЛУЧШИТЬ, Я ПРОШУ ПЕРЕБРАТЬ БИНАРНИК ИЗ АРХИВА Кстати, об этом уже писалось мною в самом первом посте:
0
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
461 / 201 / 80
Регистрация: 14.12.2017
Сообщений: 433
|
||||
| 19.12.2018, 20:20 | ||||
|
А вот FFN1, FFN2 отвечают, я так понял, за шифрование. Так вот, как уже показал выше: P K Z Result 0 1 79815 10374936077 1 1 79816 29486478199 2 1 79817 48598499217 !!! --- 3 1 79818 67710999137 !!! 4 1 79819 86823977965 !!! 5 1 79820 105937435707 !!! 6 1 79821 125051372369 !!! 7 1 79822 144165787957 !!! 8 1 79823 163280682477 !!! 9 1 79824 14147931192 !!! 0 2 79817 48598499217 !!! --- 1 2 79818 67710999137 !!! 2 2 79819 86823977965 !!! 3 2 79820 105937435707 !!! 4 2 79821 125051372369 !!! 5 2 79822 144165787957 !!! 6 2 79823 163280682477 !!! 7 2 79824 14147931192 !!! 8 2 79825 33263783594 9 2 79826 52380114946 Тоесть, для ключа К=1 и текста P=2 Result = 48598499217 !!! --- для ключа К=2 и текста P=0 Result = 48598499217 !!! --- Упс, чуть не дотянули до ![]() ![]() Добавлено через 1 час 31 минуту Еще раз: Упростим немного : Допустим есть ограничение, можно использовать только числа от 0 до 9. Тогда допустим из ключа с помощью ГПСЧ 1 7 => 5 2 1 => 7 3 2 => 6 4 7 => 3 5 7 => 1 6 2 => 6 7 5 => 2 8 4 => 5 получаем последовательность ключей К Далее используем их для шифрования: Используем предложенную супер надежную формулу z := (P + 3 * K + 4159); Result := (z * z * z * z * z + z * z + 161233) mod 2939384514263;* № 0 P= 0 K= 0 z= 4159 Result= 2711359113530 № 1 P= 1 K= 0 z= 4160 Result= 324473722856 № 2 P= 2 K= 0 z= 4161 Result= 2316798808173 Кликните здесь для просмотра всего текста
№ 3 P= 3 K= 0 z= 4162 Result= 2810603926299 № 4 P= 4 K= 0 z= 4163 Result= 1806928162546 № 5 P= 5 K= 0 z= 4164 Result= 2246195615177 № 6 P= 6 K= 0 z= 4165 Result= 1190061854153 № 7 P= 7 K= 0 z= 4166 Result= 1578951977161 № 8 P= 8 K= 0 z= 4167 Result= 474522553842 № 9 P= 9 K= 0 z= 4168 Result= 817199681051 № 10 P= 0 K= 1 z= 4162 Result= 2810603926299 № 11 P= 1 K= 1 z= 4163 Result= 1806928162546 № 12 P= 2 K= 1 z= 4164 Result= 2246195615177 № 13 P= 3 K= 1 z= 4165 Result= 1190061854153 № 14 P= 4 K= 1 z= 4166 Result= 1578951977161 № 15 P= 5 K= 1 z= 4167 Result= 474522553842 № 16 P= 6 K= 1 z= 4168 Result= 817199681051 № 17 P= 7 K= 1 z= 4169 Result= 2608025442884 № 18 P= 8 K= 1 z= 4170 Result= 2908657908118 № 19 P= 9 K= 1 z= 4171 Result= 1720140160785 № 20 P= 0 K= 2 z= 4165 Result= 1190061854153 № 21 P= 1 K= 2 z= 4166 Result= 1578951977161 № 22 P= 2 K= 2 z= 4167 Result= 474522553842 № 23 P= 3 K= 2 z= 4168 Result= 817199681051 № 24 P= 4 K= 2 z= 4169 Result= 2608025442884 № 25 P= 5 K= 2 z= 4170 Result= 2908657908118 № 26 P= 6 K= 2 z= 4171 Result= 1720140160785 № 27 P= 7 K= 2 z= 4172 Result= 1982900299660 № 28 P= 8 K= 2 z= 4173 Result= 758597894704 № 29 P= 9 K= 2 z= 4174 Result= 987662045908 № 30 P= 0 K= 3 z= 4168 Result= 817199681051 № 31 P= 1 K= 3 z= 4169 Result= 2608025442884 № 32 P= 2 K= 3 z= 4170 Result= 2908657908118 № 33 P= 3 K= 3 z= 4171 Result= 1720140160785 № 34 P= 4 K= 3 z= 4172 Result= 1982900299660 № 35 P= 5 K= 3 z= 4173 Result= 758597894704 № 36 P= 6 K= 3 z= 4174 Result= 987662045908 № 37 P= 7 K= 3 z= 4175 Result= 2671137839224 № 38 P= 8 K= 3 z= 4176 Result= 2870686347589 № 39 P= 9 K= 3 z= 4177 Result= 1587353659195 № 40 P= 0 K= 4 z= 4171 Result= 1720140160785 № 41 P= 1 K= 4 z= 4172 Result= 1982900299660 № 42 P= 2 K= 4 z= 4173 Result= 758597894704 № 43 P= 3 K= 4 z= 4174 Result= 987662045908 № 44 P= 4 K= 4 z= 4175 Result= 2671137839224 № 45 P= 5 K= 4 z= 4176 Result= 2870686347589 № 46 P= 6 K= 4 z= 4177 Result= 1587353659195 № 47 P= 7 K= 4 z= 4178 Result= 1761570876721 № 48 P= 8 K= 4 z= 4179 Result= 455000577360 № 49 P= 9 K= 4 z= 4180 Result= 608074866287 № 50 P= 0 K= 5 z= 4174 Result= 987662045908 № 51 P= 1 K= 5 z= 4175 Result= 2671137839224 № 52 P= 2 K= 5 z= 4176 Result= 2870686347589 № 53 P= 3 K= 5 z= 4177 Result= 1587353659195 № 54 P= 4 K= 5 z= 4178 Result= 1761570876721 № 55 P= 5 K= 5 z= 4179 Result= 455000577360 № 56 P= 6 K= 5 z= 4180 Result= 608074866287 № 57 P= 7 K= 5 z= 4181 Result= 2221841836942 № 58 P= 8 K= 5 z= 4182 Result= 2357965570006 № 59 P= 9 K= 5 z= 4183 Result= 1017495162183 № 60 P= 0 K= 6 z= 4177 Result= 1587353659195 № 61 P= 1 K= 6 z= 4178 Result= 1761570876721 № 62 P= 2 K= 6 z= 4179 Result= 455000577360 № 63 P= 3 K= 6 z= 4180 Result= 608074866287 № 64 P= 4 K= 6 z= 4181 Result= 2221841836942 № 65 P= 5 K= 6 z= 4182 Result= 2357965570006 № 66 P= 6 K= 6 z= 4183 Result= 1017495162183 № 67 P= 7 K= 6 z= 4184 Result= 1140864725688 № 68 P= 8 K= 6 z= 4185 Result= 2729124361257 № 69 P= 9 K= 6 z= 4186 Result= 2843940157123 № 70 P= 0 K= 7 z= 4180 Result= 608074866287 № 71 P= 1 K= 7 z= 4181 Result= 2221841836942 № 72 P= 2 K= 7 z= 4182 Result= 2357965570006 № 73 P= 3 K= 7 z= 4183 Result= 1017495162183 № 74 P= 4 K= 7 z= 4184 Result= 1140864725688 № 75 P= 5 K= 7 z= 4185 Result= 2729124361257 № 76 P= 6 K= 7 z= 4186 Result= 2843940157123 № 77 P= 7 K= 7 z= 4187 Result= 1486363217286 № 78 P= 8 K= 7 z= 4188 Result= 1596829663561 № 79 P= 9 K= 7 z= 4189 Result= 237007090997 № 80 P= 0 K= 8 z= 4183 Result= 1017495162183 № 81 P= 1 K= 8 z= 4184 Result= 1140864725688 № 82 P= 2 K= 8 z= 4185 Result= 2729124361257 № 83 P= 3 K= 8 z= 4186 Result= 2843940157123 № 84 P= 4 K= 8 z= 4187 Result= 1486363217286 № 85 P= 5 K= 8 z= 4188 Result= 1596829663561 № 86 P= 6 K= 8 z= 4189 Result= 237007090997 № 87 P= 7 K= 8 z= 4190 Result= 347332625697 № 88 P= 8 K= 8 z= 4191 Result= 1928859382029 № 89 P= 9 K= 8 z= 4192 Result= 2043256463650 № 90 P= 0 K= 9 z= 4186 Result= 2843940157123 № 91 P= 1 K= 9 z= 4187 Result= 1486363217286 № 92 P= 2 K= 9 z= 4188 Result= 1596829663561 № 93 P= 3 K= 9 z= 4189 Result= 237007090997 № 94 P= 4 K= 9 z= 4190 Result= 347332625697 № 95 P= 5 K= 9 z= 4191 Result= 1928859382029 № 96 P= 6 K= 9 z= 4192 Result= 2043256463650 № 97 P= 7 K= 9 z= 4193 Result= 691577990752 № 98 P= 8 K= 9 z= 4194 Result= 814263100830 № 99 P= 9 K= 9 z= 4195 Result= 2412366920412 Тоесть мы перебрали все позможные комбинации К=0..9 и текста 0..9. Если мы сделали функцию правильно, не будет ни одного повторения. У нас же супер функция, на которая на выдает нам случайные данные и вероятность совпадения как утверждает автор 1 / 4294967296 Тоесть для 100 значений вероятность совпадения 2-х - 0,000002328% Ну что ж, проверим: № 79 P= 9 K= 7 z= 4189 Result= 237007090997 № 86 P= 6 K= 8 z= 4189 Result= 237007090997 № 93 P= 3 K= 9 z= 4189 Result= 237007090997 Кликните здесь для просмотра всего текста
№ 1 P= 1 K= 0 z= 4160 Result= 324473722856
№ 87 P= 7 K= 8 z= 4190 Result= 347332625697 № 94 P= 4 K= 9 z= 4190 Result= 347332625697 № 48 P= 8 K= 4 z= 4179 Result= 455000577360 № 55 P= 5 K= 5 z= 4179 Result= 455000577360 № 62 P= 2 K= 6 z= 4179 Result= 455000577360 № 8 P= 8 K= 0 z= 4167 Result= 474522553842 № 15 P= 5 K= 1 z= 4167 Result= 474522553842 № 22 P= 2 K= 2 z= 4167 Result= 474522553842 № 49 P= 9 K= 4 z= 4180 Result= 608074866287 № 56 P= 6 K= 5 z= 4180 Result= 608074866287 № 63 P= 3 K= 6 z= 4180 Result= 608074866287 № 70 P= 0 K= 7 z= 4180 Result= 608074866287 № 97 P= 7 K= 9 z= 4193 Result= 691577990752 № 28 P= 8 K= 2 z= 4173 Result= 758597894704 № 35 P= 5 K= 3 z= 4173 Result= 758597894704 № 42 P= 2 K= 4 z= 4173 Result= 758597894704 № 98 P= 8 K= 9 z= 4194 Result= 814263100830 № 9 P= 9 K= 0 z= 4168 Result= 817199681051 № 16 P= 6 K= 1 z= 4168 Result= 817199681051 № 23 P= 3 K= 2 z= 4168 Result= 817199681051 № 30 P= 0 K= 3 z= 4168 Result= 817199681051 № 29 P= 9 K= 2 z= 4174 Result= 987662045908 № 36 P= 6 K= 3 z= 4174 Result= 987662045908 № 43 P= 3 K= 4 z= 4174 Result= 987662045908 № 50 P= 0 K= 5 z= 4174 Result= 987662045908 № 59 P= 9 K= 5 z= 4183 Result= 1017495162183 № 66 P= 6 K= 6 z= 4183 Result= 1017495162183 № 73 P= 3 K= 7 z= 4183 Result= 1017495162183 № 80 P= 0 K= 8 z= 4183 Result= 1017495162183 № 67 P= 7 K= 6 z= 4184 Result= 1140864725688 № 74 P= 4 K= 7 z= 4184 Result= 1140864725688 № 81 P= 1 K= 8 z= 4184 Result= 1140864725688 № 6 P= 6 K= 0 z= 4165 Result= 1190061854153 № 13 P= 3 K= 1 z= 4165 Result= 1190061854153 № 20 P= 0 K= 2 z= 4165 Result= 1190061854153 № 77 P= 7 K= 7 z= 4187 Result= 1486363217286 № 84 P= 4 K= 8 z= 4187 Result= 1486363217286 № 91 P= 1 K= 9 z= 4187 Result= 1486363217286 № 7 P= 7 K= 0 z= 4166 Result= 1578951977161 № 14 P= 4 K= 1 z= 4166 Result= 1578951977161 № 21 P= 1 K= 2 z= 4166 Result= 1578951977161 № 39 P= 9 K= 3 z= 4177 Result= 1587353659195 № 46 P= 6 K= 4 z= 4177 Result= 1587353659195 № 53 P= 3 K= 5 z= 4177 Result= 1587353659195 № 60 P= 0 K= 6 z= 4177 Result= 1587353659195 № 78 P= 8 K= 7 z= 4188 Result= 1596829663561 № 85 P= 5 K= 8 z= 4188 Result= 1596829663561 № 92 P= 2 K= 9 z= 4188 Result= 1596829663561 № 19 P= 9 K= 1 z= 4171 Result= 1720140160785 № 26 P= 6 K= 2 z= 4171 Result= 1720140160785 № 33 P= 3 K= 3 z= 4171 Result= 1720140160785 № 40 P= 0 K= 4 z= 4171 Result= 1720140160785 № 47 P= 7 K= 4 z= 4178 Result= 1761570876721 № 54 P= 4 K= 5 z= 4178 Result= 1761570876721 № 61 P= 1 K= 6 z= 4178 Result= 1761570876721 № 4 P= 4 K= 0 z= 4163 Result= 1806928162546 № 11 P= 1 K= 1 z= 4163 Result= 1806928162546 № 88 P= 8 K= 8 z= 4191 Result= 1928859382029 № 95 P= 5 K= 9 z= 4191 Result= 1928859382029 № 27 P= 7 K= 2 z= 4172 Result= 1982900299660 № 34 P= 4 K= 3 z= 4172 Result= 1982900299660 № 41 P= 1 K= 4 z= 4172 Result= 1982900299660 № 89 P= 9 K= 8 z= 4192 Result= 2043256463650 № 96 P= 6 K= 9 z= 4192 Result= 2043256463650 № 57 P= 7 K= 5 z= 4181 Result= 2221841836942 № 64 P= 4 K= 6 z= 4181 Result= 2221841836942 № 71 P= 1 K= 7 z= 4181 Result= 2221841836942 № 5 P= 5 K= 0 z= 4164 Result= 2246195615177 № 12 P= 2 K= 1 z= 4164 Result= 2246195615177 № 2 P= 2 K= 0 z= 4161 Result= 2316798808173 № 58 P= 8 K= 5 z= 4182 Result= 2357965570006 № 65 P= 5 K= 6 z= 4182 Result= 2357965570006 № 72 P= 2 K= 7 z= 4182 Result= 2357965570006 № 99 P= 9 K= 9 z= 4195 Result= 2412366920412 № 17 P= 7 K= 1 z= 4169 Result= 2608025442884 № 24 P= 4 K= 2 z= 4169 Result= 2608025442884 № 31 P= 1 K= 3 z= 4169 Result= 2608025442884 № 37 P= 7 K= 3 z= 4175 Result= 2671137839224 № 44 P= 4 K= 4 z= 4175 Result= 2671137839224 № 51 P= 1 K= 5 z= 4175 Result= 2671137839224 № 0 P= 0 K= 0 z= 4159 Result= 2711359113530 № 68 P= 8 K= 6 z= 4185 Result= 2729124361257 № 75 P= 5 K= 7 z= 4185 Result= 2729124361257 № 82 P= 2 K= 8 z= 4185 Result= 2729124361257 № 3 P= 3 K= 0 z= 4162 Result= 2810603926299 № 10 P= 0 K= 1 z= 4162 Result= 2810603926299 № 69 P= 9 K= 6 z= 4186 Result= 2843940157123 № 76 P= 6 K= 7 z= 4186 Result= 2843940157123 № 83 P= 3 K= 8 z= 4186 Result= 2843940157123 № 90 P= 0 K= 9 z= 4186 Result= 2843940157123 № 38 P= 8 K= 3 z= 4176 Result= 2870686347589 № 45 P= 5 K= 4 z= 4176 Result= 2870686347589 № 52 P= 2 K= 5 z= 4176 Result= 2870686347589 № 18 P= 8 K= 1 z= 4170 Result= 2908657908118 № 25 P= 5 K= 2 z= 4170 Result= 2908657908118 № 32 P= 2 K= 3 z= 4170 Result= 2908657908118 ![]() Упс. ![]() Без повторений только № 0 P= 0 K= 0 z= 4159 Result= 2711359113530 № 1 P= 1 K= 0 z= 4160 Result= 324473722856 № 2 P= 2 K= 0 z= 4161 Result= 2316798808173 № 97 P= 7 K= 9 z= 4193 Result= 691577990752 № 98 P= 8 K= 9 z= 4194 Result= 814263100830 № 99 P= 9 K= 9 z= 4195 Result= 2412366920412 6 из 100, тоесть не 0,000002328% а 94%.
1
|
||||
|
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
|
||
| 19.12.2018, 23:35 | ||
|
2
|
||
|
23 / 20 / 4
Регистрация: 15.12.2018
Сообщений: 152
|
|||||
| 20.12.2018, 13:19 [ТС] | |||||
|
Т.е. дешифровать этот бинарник никто не собирается ? Исходя из анекдота про Джо следует именно это.
0
|
|||||
|
23 / 20 / 4
Регистрация: 15.12.2018
Сообщений: 152
|
|||||
| 21.12.2018, 16:38 [ТС] | |||||
|
"Шифр - дерьмо! Вот есть шифротекст. Мы делает это, потом это, потом это, затем часок-другой помучаем процессор Core i7 вычислениями.... и вуаля! У нас открытый текст." А когда исходят речи в духе: "Шифр - дерьмо! Я разработал гениальный метод взлома, который позволяет получить открытый текст, перебрав не 2^256 , а всего лишь 2^255 вариантов..... " на взлом это не очень тянет. И хотя не могу поверить, что вы не поняли, что мне нужно, все равно пишу еще раз: ДЛЯ ТЕХ, КТО В ТАНКЕ: Мною был задан конкретный вопрос: Потом еще писалось: И мне очень хочется получить на него конкретный ответ, в духе: "Вот, смотри, если сделать это, это, и это, то выходит, что твой ключ [0, 1, 2, 3, 4, 5, 6, 7] " ВОТ НА ЭТОМ ДИСКУССИЮ МОЖНО БУДЕТ СМЕЛО СЧИТАТЬ ОКОНЧЕННОЙ
0
|
|||||
|
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
|
||
| 21.12.2018, 16:38 | ||
|
2
|
||
|
23 / 20 / 4
Регистрация: 15.12.2018
Сообщений: 152
|
|
| 21.12.2018, 16:42 [ТС] | |
|
0
|
|
|
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
|
||
| 21.12.2018, 16:43 | ||
|
Хотя возможно, возможно что ты просто не понимаешь, что такое взлом криптоалгоритма. И поэтому обставляешь просьбу о взломе дополнительным условием, которое по сути взлом исключает.
Алгоритм считается взломанным, если ключ можно вычислить быстрее чем перебором глубой силой. А ты ставишь дополнительное условие
2
|
||
|
23 / 20 / 4
Регистрация: 15.12.2018
Сообщений: 152
|
|
| 21.12.2018, 16:44 [ТС] | |
|
В любом случае, спасибо хоть на том, что потратили на меня свое время.
0
|
|
|
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
|
||
| 21.12.2018, 16:46 | ||
|
2
|
||
|
23 / 20 / 4
Регистрация: 15.12.2018
Сообщений: 152
|
||||
| 21.12.2018, 16:54 [ТС] | ||||
|
Добавлено через 3 минуты Я представлял, что найдется кто-то, кто сможет математикой уменьшить 2^64 вариантов, до скажем, 2^32, а потом элементарно вскроет ключ. Добавлено через 3 минуты Я прекрасно понимаю, чего прошу.
0
|
||||
|
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
|
|
| 21.12.2018, 16:57 | |
|
Если любыми методами вообще, то причем тогда бинарник из архива ? Любыми методами вообще криптоаналитик показывает, что при наличии такого вот объема шифротекста (не того объема, что ты дал, а того, что указал криптоаналитик) ключ вскрывается быстрее, чем полным перебором, а значит криптоалгоритм в топку. Объем шифротекста выбирается криптоаналитиком при построении атаки на алгоритм, а не задается заранее кем-то другим.
2
|
|
|
23 / 20 / 4
Регистрация: 15.12.2018
Сообщений: 152
|
|||
| 21.12.2018, 17:09 [ТС] | |||
|
Добавлено через 10 минут
0
|
|||
|
461 / 201 / 80
Регистрация: 14.12.2017
Сообщений: 433
|
|
| 21.12.2018, 18:29 | |
|
Я уже показал что:
1. алгоритм использует не криптостойкий ГПСЧ. 2. алгоритм имеет плохую основную функцию. Что еще нужно? Этого уже достаточно что бы считать алгоритм никуда не годным.
0
|
|
|
23 / 20 / 4
Регистрация: 15.12.2018
Сообщений: 152
|
|
| 21.12.2018, 18:46 [ТС] | |
|
0
|
|
|
461 / 201 / 80
Регистрация: 14.12.2017
Сообщений: 433
|
||
| 21.12.2018, 18:48 | ||
|
Даже если захотеть анализирвоать расчеты, то получается следующее:
Автор "работает" с числами в 32 бит. Ок. Возьмем половину от 2147483648 1073741824 Вичислим "расширение" ключа Result := BigIntToUint32(((a + 723319) * (b + 56311477) + 5119) mod 527845764689); 3,24834E+11 далее подставим полученный ключ и допустистим что текст такой же var a:System.Numerics.BigInteger := (x + 3 * y + 4159); 1,29934E+12 теперь все это попытаемся вычислить: Result := BigIntToUint32((a * a * a * a * a + a * a + 161233) mod 2939384514263); a * a * a * a * a = 3,70346E+60 a * a = 1,68827E+24 a * a * a * a * a + a * a + 161233 = 3,70346E+60 (a * a * a * a * a + a * a + 161233) mod 2939384514263 = ??? числа порядка 10^24 - 10^60 Вы в своем уме? AES 128 - все ключи 10^37 и он стойкий. Зачем умножать целые(!) цисла порядка 10^60? Добавлено через 34 секунды
0
|
||
| 21.12.2018, 18:48 | |
|
Помогаю со студенческими работами здесь
20
Составить программу шифрования и расшифровки в Delphi по соответствующему заданию: шифр Атбаш + шифр Цезеря Шифр Полибия. Программа выводит шифр в разной последовательности.
Детский сад Детский вопрос: Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи
и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|