md5 или sha1

md5
1
Нейтральная
сторона
0
sha1
10
Использовать md5
Прежде чем писать комментарии или выбрать сторону вы должны авторизироваться!
Использовать sha1

27-07-2012 17:12 0

Речь идет о самих алгоритмах шифрования. А не про гибриды типа md5(sha1(text)). Какой из данных алгоритмов лучший?

0 комментариев
27-07-2012 17:20 +2

Есть ситуации, когда нет выбора, потому что алгоритм шифрования задан протоколом (например, URN в P2P-сетях).

SHA1 подлиннее, поэтому риск возникновения столкновений меньше, чем у MD5. Плата за это небольшое снижение скорости, но по сравнению с другими расходами в современном ПО на это можно не обращать внимания.

Если же нужно избежать подбора паролей по заранее составленным таблицам, например, RainbowCrack, то лучше использовать что-нибудь менее распространённое, например, ГОСТ Р 34.11-94.

0 комментариев
27-07-2012 18:00 +1

Насколько я знаю, даже сам разраб md5 говорит, что сегодня уже времена этого алгоритма прошли и ни о какой безопасности с ним речи идти не может.

7 комментариев
i.c 27-07-2012 18:40 0

cherepets, Я делал например так: md5(text)+"cX5dFG". Вроде ни у одного пользователя ничего не украли. Сейчас перешел на гибрид md5(sha1(text))+"cX5dFG".

cherepets 27-07-2012 18:45 0

i.c, Я б лучше как-то перетасовывал или добавлял 10 рандомных букв в конец.

i.c 27-07-2012 18:47 0

cherepets, А потом как проверять будешь, если буквы рандомные? Ведь эти рандомные буквы потом не достать, пользователь вводит text при входе на сайт. Шифруется md5(sha1(text)), а буквы какие в конец добавлять, они ж при регистрации рандомные были.

cherepets 27-07-2012 18:54 0

i.c, Потом просто отрезай их при сравнении. Типо if (md5($pass) == substr($truepass, 0, strlen($truepass)-10)) {...

Ну или что-то вроде того.

opera.rulez 27-07-2012 18:59 +1

cherepets, На ша1 тоже охотились и даже небезрезультатно: пруфлинк. Однако, хотя теоретически SHA-1 считается взломанным (количество вычислительных операций сокращено в 131 000 раз), на практике подобный взлом неосуществим, так как займёт пять миллиардов лет.

В любом случае, каким бы ни был хорошим алгоритм, если шифрование без «соли», возможен RainbowCrack, особенно если алгоритм популярен и используется достаточно долгое время, чтобы накопить таблицы.

«Соль» — это, например, такой алгоритм: md5(md5(text)+salt). Помимо шифра придётся хранить ещё и «соль». Обрати внимание, что скобка стоит не так, как у i.c. И желательно, чтобы соль менялась.

Строго математически же идеальный алгоритм невозможен. Односторонние и несимметричные преобразования всегда менее надёжны, чем симметричные.

Наконец, у преобразований, сжимающих размер до фиксированного, всегда должны быть столкновения. Представь себе, что md5 и sha1 текст любого размера сжимают до 16 и до 20 байт соответственно. По комбинаторному принципу Дирихле из текстов длиной 21 байт найдутся не менее 256, у которых sha1 совпадают. А если я возьму тексты длиной 24 байта, то это число возрастёт до 4 миллиардов.

Именно из-за столкновения не рекомендуется ни в коем случае повторять алгоритмы одностороннего шифрования. То есть md5(md5(text)), md5(sha1(text)) и т. п. будут слабее, чем даже md5(text), потому что вероятность столкновений возрастёт.

i.c 28-07-2012 09:35 0

opera.rulez, Я читал в учебнике по php+mysql, что можно использовать md5(md5(text))

opera.rulez 28-07-2012 15:07 0

i.c, Можно, но вероятность совпадений результатов для разных текстов возрастёт, поэтому для хранения паролей такую композицию лучше не использовать.

27-07-2012 23:16 +1

У MD5 є колізія.
----
Тысячный комментарий.

0 комментариев
28-07-2012 02:11 0

А я вообще знаю только шифр Цезаря(

2 комментария
opera.rulez 28-07-2012 04:40 0

ScienceDiscoverer, Печально. Он легко взламывается с помощью частотного анализа, если на входе текст на естественном языке. Буква «е» кириллицы и буква «e» латиницы в большинстве языков будут самой частой буквой (в длинном тексте), потому в азбуке Морзе и обозначаются одной точкой. Найдя одну букву, мы находим сдвиг и читаем весь текст.

Прочитай для начала про подстановки. Кстати, доказуемо невзламываемый алгоритм — одноразовый блокнот — очень прост, но на практике невыгоден, поэтому пользуются менее надёжными.

В данном же холиваре речь о хешировании.

ScienceDisco… 28-07-2012 10:42 0

opera.rulez, Ну походу все это хеширование мега супер компьютер мог бы взламать за пару часов. Как в одном из первых романов Дена Брауна "Цифровая крепость".

29-07-2012 00:52 0

ого, так мало зеленых, круто. Мне казалось, опять увижу еще одну выходку синдрома маленького утенка.
Мою простую причину перечислили - коллизии.

2 комментария
ScienceDisco… 29-07-2012 02:17 0

r619, Вы все тут такие продвинутые...

opera.rulez 29-07-2012 02:25 0

r619, А у sha1 их типа нет?