Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Я не понял про 108 бит. Это что уязвимость MD5? Тогда можно... 11.01.07 11:37 Число просмотров: 5183
Автор: Maksim Статус: Незарегистрированный пользователь
|
> > > Чтобы дешифровать достаточно известных первых 16 > байт > > > текста и получения прообраза 108 битов для MD5 на > 108 > > > битах(Пароль нам не нужен, достаточны найти хэш > от > > него). > > > Увеличение длины блоков даст прирост в стойкости, > но > > тогда > > > ты еще больше отстанешь по скорости. > Ты поспорь с тем, что сказано выше, про твои хэши я все > понял, ты внимательно текст прочитай. Я не понял про 108 бит. Это что уязвимость MD5? Тогда можно использовать SHA-1. Алгоритм от этого не меняется. Знание первых 16 байт ничего не дает. т.е. не помогает при расшифровке следующего блока данных. Можно подробнее про 108 бит, если можно, то ссылку.
Пример:
key=значение;
delta=первоначальное значение;
EncData[0]=Data[0] ^ Hash(key+delta); // первый блок
delta=Data[0];
EncData[1]=Data[1] ^ Hash(key+delta); // второй блок
delta=Data[1];
Т.е. даже зная EncData[0], Data[0], delta, Hash(key+delta) и EncData[1] как найти Data[1] или Hash(key+delta) или key ?
Математической формулы нет. Если только уязвимость конкретной хеш-функции.
> А ты спроси у кого-нибудь, кто дизассемблировал наваянное > на vc++ c шаблонами и прочим ооп. Оптимизация компилятора > все это неплохо убивает. Я прекрасно знаю, как раскрываются шаблоны. Вот простой пример:
vector<int> a;
a.resize(16);
for(int i=0; i<a.size(); i++) a[i]=~a[i];
В этом примере в выражении a[i]=~a[i] при каждой итерации происходит проверка значения индекса i на допустимость диапазона (реализовано в самом шаблоне vector), хотя она здесь явно не нужна. И в шаблонах таких проверок очень много. С одной стороны, это копейки, но когда это все находится в цикле на несколько милльонов итераций - это тоже сказывается на производительности. Плюс в программе есть места простого копирования блоков памяти, без которого тоже можно обойтись. На мой взгляд имеет смысл оптимизировать, пока загрузка процессора станет ниже скорости чтения данных с винчестера. Вот тогда будет действительно хорошая скорость.
|
|
|