Pull to refresh

Comments 93

Достаточно интересно… Когда то реализовывал класс СRSA. Но это тема для целой статьи, а не коммента.
шифрование с помощью ключей, вещь конечно очень мощная.
но мне всегда было интересно придумать шифрование которое бы основывалось только на исходной строке.
насколько я знаю, до сих пор нет таких алгоритмов, чтобы они при этом были обратимыми и обладали очень высокой стойкостью к взлому.
нубский, наверное, вопрос, но я не могу понять, а зачем может понадобиться применять некоторый алгоритм шифрования, который всем известен?
то есть расшифровать строку можно вашей же функцией, в чем смысл шифрования?
шифрование основано на двух матрицах(квадратах) с символами. символы в каждом квадрате одни и теже но в разной последовательности. тоесть вы берете мою функцию, перемешиваете подругому второй квадрат и всё. шифрование будет уже другое.
и чем это отличается от шифрования с помощью ключей?
почти любое шифрование так или иначе использует ключи.
здесь нет понятия ключей в применимом обычно смысле. так как ключи внутренние, постоянные для каждой реализации функции и потому упрощающие пользование функцией
Если забить ключ в качестве константы в реализацию алгоритма будет то же самое — постоянный ключ для этой реализации.
Ну так значит, ваши матрицы с квадратами — и есть ключи шифрования.
Ведь ключ — это не обязательно абстрактная строчка длиной n бит.
К примеру в ГОСТ — ключ — это точка эллиптической кривой. А в двойном квадрате — это матрицы
с этим никто и не спорит. просто наверное я не так выразился.
называйте квадраты ключами. если так хочется )
А разве это не взаимоисключающие вещи?
в этом вся сложность)
В этом не сложность, в этом невозможность достижения одновременно этих двух параметров… Вроде как «Lexus в комплектации Luxury за 9999.99 руб.». Или «Запорожец 1980 г.в всего за 4 232 226 руб.» Кому какая аллегория ближе…
Как со скоростью?
алгоритм конечно простенький но реализация имхо переусложнена

ну и наличие таких вещей как for($i=;$i<$dimension;$i++) и $s1[$a1[]][$a2[1]] несколько пугает
-почти пол функции это создание самих матриц с символами ) остальное обход в два цикла. как именно можно сделать проще?
-наличие [] в $s1[$a1[]][$a2[1]] э то парсер съел :(. там не [] должно быть а [0]
это конечно дело вкуса но именно создание матриц я считаю переусложнением. никаких там масивов с индексами не надо — все можно посчитать простенькими операциями mod и div.
возможно. будет время сделаю рефакторинг ) и упрощу
например для защиты от спама.
делаю так
email

когда кликнули на mailto.php, я показываю окошко с Капчей, и если её правильно ввели, то налету получаю реальный Емайл из переданного шифра, и показываю пользователю
а бот не может перейти по этой ссылке?
ну а про капчеломательство… могет только капчей и ограничиться?
ссылка ведет на капчу.
а как мне в скрипте узнать какое именно мыло то отобразить?
передавать ИД пользователя? и лезть опять в БД чтоб получить почту?
тоже вариант. но у меня получается более универсально так как работает с любым переданным мылом сразу. и к БД коннектов таким образом меньше.
в общем от ботов чтото важное скрывать самое то.
А старый-добрый метод с шифрованием от ботов при помощи JS вас чем не устраивает?
устраивает)
но имеет дополнительные минусы
— не работает если JS выключен
— злоумышленник имеет у себя исходник шифрования, что на порядок упрощает настройку бота на автоматический взлом
Те, у кого выключен JS идут лесом, это я вам ответственно заявляю. Сколько ещё лет будут поддерживать функционал для людей без JS? 20?

Если у вас меньше 10к посетителей в день, например, то никто не станет заморачиваться и что-то там дописывать специально для вашего сайта.
выше в комментах я ответил. щас добавлю в сам пост.
rc4 к примеру. помню, реализация была строк 10 — плюс шифр потоковый. выложить?
+rc4

Использовал в качестве патча для VB, отлично…

с ключем до 2кб… взломать… хех… не знаю…
по крайней мере с ключем…
а зачем 2кб? максимальная длина ключа, которая имеет смысл — 256 байт. а взломать более чем реально, если есть большой набор материала (WEP дырявый, да и WPA1, основаны на RC4 как раз)
UFO just landed and posted this here
Я не силен в РНР, подскажите, пожалуйста — а что делает функция md5_decrypt?
явно не то о чем говорит её название )
UFO just landed and posted this here
Т.е. я правильно понял — вы по МД5 хэшу восстанавливаете исходное значение?
UFO just landed and posted this here
длинна зашифрованного текста почти в два раза больше оригинала.
не критично, но накладно иногда
Не в два раза. А константно на 16 байт.
Там просто вначале идет 16-байтовый инициализирующий вектор. А за ним само сообщение, тоже выровненное на границу 16 байт. Так что оверхед в худшем случае будет составлять 31 байт.
Да ладно, там же явно видно, что МД5 используется для генерации гаммы.
увижу в своем проекте — поверю, про инопланетян тоже говорят что кто-то видел ;)
шутко…
alek_sys писал что то типа «Т.е. я правильно понял — вы по МД5 хэшу восстанавливаете исходное значение?»
Но блин как можно по md5 хэшу восстановить что то конкретное?
брутфорсом, только если либо что-то короткое либо «словарное»
или я топор или одно из двух! зная хэш брутфорсь сколько хочеш. но найденный тобой ключ может не совпадать с исходным
типа того, но для паролей скорее будет совпадать… посмотрите в инете онлайн взломщики md5 :)
насчет невозможно это вы зря )
UFO just landed and posted this here
1) я не являюсь криптоаналитиком, и возможно действительно несмогу расшифровать.
2) криптоанализ стоит очень дорого )

зато тут на хабре очень много умных людей )
так что давайте ваши фразы. возможно у когото получится разобраться достаточно быстро)
ваша функция, есть просто еще одна модификация XOR шифрования )
а как легко сломать xor-подобные функции можно поискать в гугле. там море способов.
жду фразы зашифрованные вашей функцией )
Знаете, одноразовый блокнот тоже строится на основе XOR. Его вы тоже сломаете? :)
В самом XOR нет совершенно ничего плохого. Всё зависит от того, с чем XORить.
XOR это не шифрование!
если ethaniel, даст пример шифров его функции, возможно я смогу вам это наглядно показать )
Вот тут вы правы в одном, XOR — это не шифрование. Это «исключающее или» :)
А вообще XOR как один из этапов применяется во многих крипто-алгоритмах.
Вот почитайте например о гаммировании:
ru.wikipedia.org/wiki/Гаммирование
Да в общем вы и сами можете зашифровать. Просто выберите в качестве пароля любую строчку подлинее. А потом забудьте пароль :)
И попробуйте восстановить зашифрованное сообщение.
Если получится — напишите топик (я первым за него проголосую), или отпишитесь сюда в комментарии, как вы это сделали.
Слабость конкретно этого шифра заключается в том, что там в преобразованиях используется сам пароль (вместого его хеша). При коротких паролях возможно он легко вскроется. Но если поставить случаный 16-символьный пароль — будет уже сложнее.
В общем, попробуйте :)
Думаю хабрасообществу будет интересен такой топик

UFO just landed and posted this here
Ключ содержит слово habr или зашифрованный текст?
UFO just landed and posted this here
По-моему для такой задачи при таких условиях и Цезарь бы подошел. + работал бы быстрее.
Для расшифровки Цезаря достаточно сообщения длиной L, где L — длина алфавита. Для расшифровки 2ых квадратов необходимо сообщение длиной L*(L-1)…
неужели всего L*(L-1)?
можно линк на методы взлома?
Это легко посчитать ручками. Для того чтобы получить «достаточное» количество исходного материала, нужно передать все пары из алфавита, комбинация L по 2 => L*(L-1)… Упростить не получиться, т.к. импликации и эквивалентности нет, т.к. 2 разных квадрата…
Опс… Забыл что у нас пары… Т.е. 2*L*(L-1)…
да. теоретически получается чтото такое)
ознакомлюсь. спасибо
кстати, этот RC4 — с ошибками, сравните результат его работы и работы mcrypt'овского ARCFOUR. к тому же парадоксально медленеее, чем вариант без ошибок (http://www.phpclasses.org/browse/file/3689.html)
Может быть. Факта это не меняет: в сети до пупа реализованных на чистом PHP алгоритмов симметричного шифрования.
Использовал для своего шифрования случайные числа, в итоге для одной и той же строки получается разный зашифрованный результат, при расшифровке все отрабатывается нормально и не требуется никаких ключей, для передачи данных пользователю в хидден полях подходит хорошо.
UFO just landed and posted this here
я только не понял одного момента
$s1[$a1[]][$a2[1]]
зачем там $a1[]
это парсер что-то скушал или уличная магия?
парсер. там должно быть [0]
поправь плз там в трех местах такое, может больше
Вот, есть ещё один, довольно просто реализуемый алгоритм симметричного шифрования. Называется CipherSaber (CipherSaber на Wikipedia). Легко реализуется на PHP.
Обфускация какая-то, а не шифрование.
nPwro%ki99NvxQoKg1xA*

что тут написано? ))
Если вести речь о приведённой в топике функции, то «7f1G6(S7huNFZg2gSx1Y*», а что?
функция та же. но квадрат другой.
это все таки шифрование )
Если длина ключа больше или равна длине имеющегося шифротекста, то есть неплохой шанс столкнуться с шифром Вернама.

Да и я не вижу квадрата в параметрах функции, следовательно, вы мошенничаете. ;-)
Не следует путать шифрование с кодированием.
Первое правило криптографии — не изобретайте свои алгоритмы. Подобный — основанный на квадратах взламывается моментально (см. линейный криптоанализ)

Как уже подсказали реализация полно в частности BlowFish, DES (пусть и скомпрометированный, но достаточно стойкий), IDEA, GOST блоковые или тот же совершенно простой RC4 потоковый.

:-)
а какже разминка для ума?
изобретая свои лучше — понимаешь чужие)
Это не разминка, к сожалению, это профанация достаточно сложной области математики, только не обижайтесь :-)

Вы, кстати, попали в очень распространную ловушку. Кажется, если никто не знает ключ, то шифр очень надежен, но на самом деле это не так.

я так далеко и на замахивался.
и прекрасно понимаю степень его надежности.
другого никто и не утверждал.
GOST это ГОСТ? Забавно вы его на родине обзываете.
Первое правило криптологии: Нельзя недооценивать противника, а не ваше.

Здесь более уместны 2, 3, 4 правила:
1. О степени сложности может судить только криптоаналитик
2. При оценке надежности, нужно допустить что противнику известно все кроме ключа.
3. Внешняя сложность может быть иллюзорной, она вселяет в криптографа обманчивое впечатление надежности

Хотя в остальном согласен, глупо в криптографии изобретать велосипед
А чо такого то в спам-ботах? Пускай шлют. Фильтры не пустят все равно. ;)
Зачем это нужно для проектов, у которых не хватает хотя-бы 6 баксов в месяц на вменяемый хостинг?
Чем вам модуль mcrypt не угодил, там столько всего вкусного!
[humour]Не у всех хватает денег на платный хостинг для сверсерьезных проектов с защитой данных[/humour]
Я так подозреваю, 8-битные кодировки это дело не поддерживает?
У вас в таблице последний 80-й символ — просто пустота. Так надо?
Sign up to leave a comment.

Articles