UbIvItS Раз ты у нас такой спец по крипто, держи шифр на слом. Может и осилишь. Код (Text): void encrypt(unsigned *a, unsigned *b) { unsigned v0, v1, t; int n; v0 = *a; v1 = *b; for (n = 0; n < 16; n++) { v0 += (v1 >> 3) + k0; v1 += (v0 << 5) + k1; t = v1; v1 = v0; v0 = t; } *a = v0; *b = v1; } void decrypt(unsigned *a, unsigned *b) { unsigned v0, v1, t; int n; v0 = *a; v1 = *b; for (n = 0; n < 16; n++) { t = v1; v1 = v0; v0 = t; v1 -= (v0 << 5) + k1; v0 -= (v1 >> 3) + k0; } *a = v0; *b = v1; } Это блочный шифр. Длина блока 64 бита, длина ключа 64 бита. Архитектура - сеть Файстеля. В качестве решения принимаются любые атаки со сложностью менее 2^64 при требуемом количестве плейнтекста менее 2^32
hwegh дай свою почту - файл скину...... за алгос спасибо, подумаю flankerx несколько позже я тебе дам трудный шифр, если хочешь, конечно.... кодирвка одна и таже.
Мое время стоит вполне определенных денег. Если ты готов его оплачивать — пожалуйста, присылай. Перепроверь. И сравни hex-представления файлов. И научись публично признавать собственные ошибки. RTFM про сети Фейстеля — многое прояснится. Ну или просто прочитать листинг с ключом /brain:on.
flankerx кстати, покажи мне более умную реализацию, если можешь............ то, что показал hwegh, слабо: имеет сложность O(2^2*N), где N - длинна блока(в нашем случае 8 бит); достачно рассматривать ключ на 128 байт, как массив 4-х байтовых блоков и перебор станет нереален.
То, что показал hwegh, ломает твой "шифр" полностью. Я утверждаю что твой "шифр" можно сломать без plaintext'а вообще — при условии что известен язык сообщения. Можно много рассуждать и фантазировать. Ты убеждал нас что твой алгоритм надежный — мы продемонстрировали обратное. Теперь ты убеждвешь нас в том, что твой алгоритм _можно_ сделать надежным. Наверное, можно. Например, если превратить его в AES А зачем? Эта вполне работает и проста в реализации. Ты сам-то понял что написал? Сложность имеющегося алгоритма — O(2^N), гениальный ты наш. Если бы алгоритм имел квадратичную от длины сложность, то тебе никакое увеличение длины блока не помогло бы, хотя ты этого и не понимаешь. UPD: цитируется исходный пост товарища, ныне поправленный без changelog'а
ошибся) точней O(2^2*N) ) ты путаешь фантазию с математикой) давай немного изменим алгос и попробуем ) - N будет равно 4 байта?) а насчёт 2^1024 - подставь N==64) никоим образом не могу себя так назвать, так как видел действительно Гения, а я так просто присел погреться.........))
Это ты путаешь словоблудие с криптографией Т.е. ты готов оплачивать моё время? Ну что ж, выкладывай исходный текст, шифртектс и код шифрования. Только без приколов с кодировкой.
ты называешь изменение массива char на массив int и ещё пару строк в коде фантазией(???), тогда прям и не знаю, что сказать...........) от тебя я только и вижу какой ты высокооплачиваемый Гуру) hwegh спасибо за пояснение. кстати, твоя задача имеет офиц. решение или ты в поисках героя????
Я просто нафигачил первое что пришло в голову. UbIvItS В случае твоего шифра можно подбирать только один ключ. Пусть С - шифртекст, M - playntext, k1 и k2 - ключи, тогда c = (m xor k1) + k2 k1 = (c - k2) xor m k2 = c - (k1 xor m) Так что подбираем один из ключей, а второй вычисляем.
Если честно, я даже не зна как это назвать. Ты предложил самое очевидное решение, которое в какой-то мере обезопасит твой "шифр" от предложенной атаки, да. Стал ли шифр от этого надежнее? Не уверен. Попробовал ли ты сам сломать его до того, как предлагать это здесь? Нет. Это все очень-очень грустно. Если ты почитаешь тематические конференции, то увидишь, что с определенной периодичностью там появляются личности, утвержадющие что они изобрели невзламываемый шифр, алгоритм факторизации работающий за линейоне время, или архиватор, который гарантированно ужмет данную последовательность хотя бы на один бит. Эти личности заканчивают точно там же, откуда и и пришли - в неизвестности. В твоих сообщениях просматриваются некоторые типичные признаки этого, но вроде еще не все потеряно. Серьезно — поизучай хорошие книжки по криптографии, там много правильных вещей написано. Например, там написано что создать надежный шифр крайне сложно. А мне вот стало интересно, зачем нужен симметричный алгоритм с длиной ключа 1024 бита? Не конкретно этот, а вообще. А, UbIvItS?
hwegh да вычисляемый - только верность k2 зависит от верности k1. ---------------------------------------------------------------------------------- ты упрекаешь........??) если ты в теме, а насчёт себя, опять же замечу, далеко не Гуру), то должен знать, что не ломаемый математически шифр существует =============> угадай его название) - Б....т ты абсолютно прав кол-во операций на взлом одно и тоже)) а мне стало интересно как вообще мог возникнуть такой вопрос????? и, вообще, либо давай алгос взлома шифра, либо кончай тратить своё высокооплачиваемое время на флудотоп.......
UbIvItS Твой "шифр" ломается одинаково легко независимо от используемой длины слова. Алгоритм взлома практически не отличается от описанного выше, сложность остается прежней. Меняется лишь порядок, в котором нужно восстанавливать байты ключа. Кстати, атака только по шифртексту также остается вполне реальной. Дальше разжевывать надо, или сам додумаешься? И, все же, ответь на два вопроса: 1. Зачем все-таки нужен симметричный алгоритм с длиной ключа 1024 бита и где его имеет смысл использовать? 2. Сколько времени (минут, часов, дней) ты потатил на анализ собственного изобретения прежде чем предлагать его тут?
flankerx вопрос на засыпку: ответь почему алгос hwegh не будет ломать мой шифр)?? хватит намёков, если знаешь говори, а так.......
А хрен его знает, я ламер и нишарю. Это UbIvItS у нас супер профи в криптографии, может он что придумает