скорость crypt md5

очевидно что основной тормоз это вычисление самой MD5.
лучше не брать её из библиотеки, а скомпилировать статически и с оптимизациями,
тогда есть шанс что p4 перестанет настолько тормозить.
очевидно что основной тормоз это вычисление самой MD5.Ну да, понятно, что самый затык на crypt и вызовы оттуда md5 приходится.
лучше не брать её из библиотеки, а скомпилировать статически и с оптимизациями,
Но прикол в том, что там есть 2 системы на Xeon - железо почти одинаковое, но одна система Gentoo с оптимизацией под P4, а другая RedHat 9, которой хрен знает сколько лет. И результат - одинаковый.
Кто-нибудь на других процах/системах может потестить?
просто на p4 оптимизация очень много дает, NetBurst слишком уж отличается от i686.
K8 Sempron 2GHz/Linux 2.6/Ubuntu x86_64 - 2342
Кстати, я на P4 2.4 когда по 10 секунд отмерял, то у меня на первые 10 секунд было больше 600 паролей в секунду, а потом не больше 380.
скорость около 3600
J-t-R 1.7.0.2Это что такое?
"bbbbbb"Ну это я так - для прикола.

А ещё непонятны сливания в одном классе - CeleronM 1.3 vs PentiumM 1.6, Celeron 800 vs Pentium 800. Там что оптимизация сказалась? Тогда как же Gentoo vs RedHat 9?
john the ripper
оптимизирован специально под перебор, поэтому работает быстрее, чем crypt в цикле
оптимизирован специально под перебор, поэтому работает быстрее, чем crypt в цикле
Со статически слинкованной скомпиленной с оптимизацией crypt 1600
hash считает от password + salt?
имхо, дело не в md5, потому что винда md5-хэши считает со скоростью 100тыс. в секунду
Вот что показывает профилирование варианта с заинлайненным crypt:
CPU: PIII, speed 1300 MHz (estimated)
Counted CPU_CLK_UNHALTED events (clocks processor is not halted) with a unit mask of 0x00 (No unit mask) count 100000
samples % linenr info image name app name symbol name
51514 51.1808 pwhack.c:79 pwhack pwhack md5_process_block
22517 22.3714 (no location information) libc-2.3.6.so libc-2.3.6.so (no symbols)
13375 13.2885 pwhack.c:236 pwhack pwhack __md5_process_bytes
9733 9.6700 pwhack.c:355 pwhack pwhack __md5_crypt_r
1191 1.1833 (no location information) pwhack pwhack .plt
553 0.5494 (no location information) oprofiled oprofiled (no symbols)
имхо, дело не в md5, потому что винда md5-хэши считает со скоростью 100тыс. в секундуНу, я думаю, это ещё от размера данных зависеть должно.

Потом в crypt хешем не просто md5 является... там оно лишь часть процедуры.
Кстати, прогу виндовую поставил для подбора - на Athlon XP 1700 она тоже 1500 паролей в секунду выдаёт, что с результатом у Linux на таком же проце схоже.
каким образом?
> Потом в crypt хешем не просто md5 является... там оно лишь часть процедуры
так вот как раз у меня подозрение, что как раз crypt херней и страдает, и что если md5-hash считать напрямую, то работать будет на несколько порядков быстрее
Вот кусок кода. Коммент жжот
/* Now comes another weirdness. In fear of password crackers here
comes a quite long loop which just processes the output of the
previous round again. We cannot ignore this here. */
for (cnt = 0; cnt < 1000; ++cnt)
{
/* New context. */
__md5_init_ctx (&ctx);
/* Add key or last result. */
if cnt & 1) != 0)
__md5_process_bytes (key, key_len, &ctx);
else
__md5_process_bytes (alt_result, 16, &ctx);
/* Add salt for numbers not divisible by 3. */
if (cnt % 3 != 0)
__md5_process_bytes (salt, salt_len, &ctx);
/* Add key for numbers not divisible by 7. */
if (cnt % 7 != 0)
__md5_process_bytes (key, key_len, &ctx);
/* Add key or last result. */
if cnt & 1) != 0)
__md5_process_bytes (alt_result, 16, &ctx);
else
__md5_process_bytes (key, key_len, &ctx);
/* Create intermediate result. */
__md5_finish_ctx (&ctx, alt_result);
}
так вот как раз у меня подозрение, что как раз crypt херней и страдает, и что если md5-hash считать напрямую, то работать будет на несколько порядков быстрееТак вопрос не в скорости подсчёта md5, и даже не совсем о скорости crypt, а про сравнительную производительность разных архитектур при подсчёте crypt.
фиговый эксперимент. не надо использовать системную crypt для этого.
не надо использовать системную crypt для этого.А чем она плоха? В системных библиотеках не нужны оптимизации, разве?
И это не эксперимент. Просто мне непонятна очень низкая производительность на некоторых системах. Т.е. я сначала запустил на одной (Athlox XP 1700 а потом на другой (P4 2.4) с почти одинаковой ОС и очень удивился увидев огромную разницу в скорости.
md5 плохо работает на p4 в силу своей структуры - короткий цикл в котором модифицируются одни и те-же данные.
просто в этом случае нужна жёсткая оптимизация.А разве она с таким же успехом не нужна в системной библиотеке?
Если система "дружественная", то библиотечная функция будет проверять входные данные,
что, соответственно, требует времени.
---
...Я работаю антинаучным аферистом...
А разве она с таким же успехом не нужна в системной библиотеке?ну не обязана функция crypt в системной библиотеке быть оптимизированной на перебор паролей =)
со своей задачей она справляется по-любому.
Еще кстати, на тему быстродействия этой конкретной программы: запускал ее интереса ради на ноутбуке. На нем включен CPU Frequency scaling. Так вот, от этой программы проц "разгоняться" с 600Mhz холостого хода до 1.7GHz не захотел. Соответственно, результаты между запуском программы "просто так", и запуском программы с предварительным переводом проца на 1.7GHz - различается примерно в 3 раза, как и должно быть. Удивительно то, что вообще, при запуске процессорноемких программ процессор обычно всегда "разгоняется" сам, а от этой программы разгоняться не захотел.
ну не обязана функция crypt в системной библиотеке быть оптимизированной на перебор паролейЕсли не под вычисление хеша - то подо что она тогда должна быть оптимизирована?
Даже если она там и не сильно оптимизирована, то не считая FreeBSD, сравнивались glibc-реализации на разных процах фактически. И слив P4 по-моему просто ужасен.

P4 сливает т.к. для него нужно писать какую-то свою реализацию этой функции, обычная на нём сосёт. (как и он сам собственно

P4 сливает т.к. для него нужно писать какую-то свою реализацию этой функции, обычная на нём сосёт. (как и он сам собственно )Ну да, вот это то и отстойно. Я всегда знал

Ubuntu Linux 2.6.15
gcc 4.0.3
2400 pass/sec
опции при компилировании: -O4 -lcrypt
Fedora Core 4 x86_64 (2.6.13)
gcc version 4.0.2 20051125 (Red Hat 4.0.2-8)
~2350 pass/sec
-------------------
AMD Opteron(tm) Processor 248
Fedora Core 5 x86_64 (2.6.15)
gcc version 4.1.1 20060525 (Red Hat 4.1.1-1)
2768.50 pass/sec
Удивительно то, что вообще, при запуске процессорноемких программ процессор обычно всегда "разгоняется" сам, а от этой программы разгоняться не захотел.AFAIK, процессор не разгоняется сам, его разгоняет операционная система.
AFAIK, процессор не разгоняется сам, его разгоняет операционная система.AFAIK, процессор не разгоняется сам, его разгоняет материнская плата, получившая пинок от операционной системы.
Это я к тому, что процессор и материнская плата не виноваты в том, что ты наблюдал.
Оставить комментарий
tokuchu
Вот такая программа без претензий на идеальность:Перебирает пароли "[a-zA-Z]{6}" и сравнивает хеш с известным. Наблюдаются странная скорость её работы на разных платформах (в паролях в секунду):
Athlon XP 1700+, Gentoo, linux 2.6, gcc-4.1 - 1620
Xeon 2.4, Gentoo, linux 2.6, gcc-3.4 - 1620
Xeon 2.4, RedHat 9, linux 2.4.31, gcc-3.2 - 1620
CeleronM 1.3, Gentoo, linux 2.6, gcc-4.1 - 1349
PentiumM 1.6, FreeBSD 6.0 - 892
Celeron Coppermine 800, Gentoo, linux 2.6, gcc-4.1 - 856
P3 Coppermine 800, Slackware, linux 2.6 - 669
P4 2.0, FreeBSD 6.1 - 540
P4 ?, FreeBSD 5.4 - 490
Athlon 1000, FreeBSD 5.4 - 452
P4 2.4, Gentoo, linux 2.6, gcc-4.1 - 380
PentiumM 600, FreeBSD 6.0 - 333
P3 500, FreeBSD 4.11 - 280
Вот так вот