| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Hashing - Хэширование, оптимизированные библиотеки |
| Автор: textExpanser 16.8.2007, 15:12 |
| Помогите в поиске быстрых библиотек для хеширования. Нужны алгоритмы для следующих хэшей: 1) MD5 2) SHA-1 3) Tiger (Tiger-128 и Tiger-192) 4) ed2k (на основе MD4) 5) crc32 Библиотеки можно к каждому алгоритму отдельно или по несколько алгоритмов - все равно, главное оптимизация по скорости. Желательна компилируемость в DLL или ActiveX (или готовые уже), т.к. будет прикручиваться к delphi программе. Оптимизация на уровне ассемблера, MMX/SSE - совсем хорошо. |
| Автор: SABROG 16.8.2007, 15:34 |
| Кому интересно, тут тоже эта тема поднималась - http://www.delphimaster.ru/cgi-bin/forum.pl?n=3&id=1186923739 |
| Автор: textExpanser 16.8.2007, 17:04 |
| Но до конца не решилась. Поэтому можно (и нужно) отвечать прямо здесь. |
| Автор: jonie 16.8.2007, 19:20 |
| на wasm.ru чето лежало.... когда-то писал для себя на masm-е CRC32 мож оптимизируешь... я не ставил перед собой такую цель) |
| Автор: nickless 16.8.2007, 21:36 |
| Еще http://www.koders.com/default.aspx?s=MD5&btn=Search&la=*&li=* можно поискать |
| Автор: Void 16.8.2007, 22:08 |
| Для MD4, MD5 и SHA1 — http://www.openssl.org/. Библиотека с очень длинной историей, используется практически повсеместно, где нужна криптография. Основательно оптимизирована, в том числе и с ассемблерными вставками. Провёл с ней простенький тест: получил ~300 Мб/с для MD5 и ~200 Мб/с для SHA1 на A64 3200+. Хватит? |
| Автор: Void 16.8.2007, 22:39 |
| Вспомнил, есть ещё http://directory.fsf.org/security/libgcrypt.html. Там есть реализация всех перечисленных алгоритмов, кроме Tiger-128 (192 есть). Скорость, правда, поменьше: MD5: ~170 Мб/с SHA1: ~130 Tiger-192: ~35 CRC32: ~180 (вот это ужоснах, сляпанная на коленке реализация будет лучше). |
| Автор: jonie 16.8.2007, 22:46 |
| интересно моя реализация crc32 как даст по скорости..)) поди тоже не высоко... да кучи есть подобных библиотек. кучи. ___ [off] кстати.. вот мы говорим о скорости библиотек... что вроде как куски блоками передаются туда-то.. а нельзяли обрабатывать сразу для 2-х и более алгоритмов? Т.е. что я имею в виду: имеем код какрой-то контрольной суммы: взять DWORD, произвети действия. взять следующий DWORD. Когда можно сделать взять DWORD, произвести действия для алгоритма1, для алгоритма2 взять следующий DWORD Т.о. мы будем "пробегать по памяти один раз"... правда тут с оптимизаций полная фигня, наверно 8)) [/off] |
| Автор: textExpanser 17.8.2007, 00:37 |
| jonie: Эт точно, я за такое не возьмусь. Спасибо, ребята. |