Comments 13
Алгоритмы предполагается использовать в целях обучения — в реальных проектах рекомендуется в целях безопасности использовать существующие библиотеки
Кроме безопасности, есть еще одна причина — plain C реализация как правило медленная. Production-grade(sic :) решения затачиваются под конкретное железо (AVX, SSE, и тд.)
Ваш К.О.
+4
«plain C» vs. «Production-grade»Мне кажется, что вы здесь попутали таки теплое с мягким — на том же «plain C» можно плодить вполне кошерные «Production-grade» решения.
Да и в целом не совсем правда (не холивара ради): сишное решение при прочих равных (если руками написано) будет не много медленнее чем оно же на ASM-е. И уж всяко быстрее чем например на c++ (тот же Crypto++), хотя бы потому, что в чистых си нет: exception handling, «слепые» аллокаторы и вызовы/возвраты в стеке, rtti и иже с ними — соответственно отсутствует overhead на все это добро.
0
сишное решение при прочих равных (если руками написано) будет не много медленнее чем оно же на ASM-е
Например, у интела есть особые инструкции (пруф #1) для быстрого вычисления некоторых хешей.
Plain-C — я называю портабельное решение, которое использует исключительно битовые операции и прочие возможности, которые есть в стандартном Си. Такое решение будет (а) компилироваться подо все (б) тормозить.
Да, можно использовать интринсики, и писать «как-бы» на Си. Это имеет примерно такое же отношение к Plain-C, что и инлайн ассемблер. Последний кстати в gсс просто божественный, так как нормально умеет взаимодействовать с оптимизатором.
+4
сишное решение при прочих равных… быстрее чем например на c++Кстати кейворда «С++» в моем коментарии не было вообще, странно, что вы решили мне объяснить преимущества Си перед C++.
Вобще говоря, ИМХО вы не правы. Если есть желание, можно обсудить конкретные кейсы. Например, я не понял что вы хотели сказать этим
«слепые» аллокаторы и вызовы/возвраты в стеке
+2
Кстати кейворда «С++» в моем коментарии не было вообщеЭто как бы да, но ваш коммент был на цитату в оригинале "… использовать существующие библиотеки… например, Crypto++ для C++".
Потому и решил, как вы выразились, «объяснить преимущества Си перед C++».
Если есть желание, можно обсудить конкретные кейсыПростите но холиварить на эту тему желания нет вовсе. Оно у меня почти в крови, выстрадано более чем 20-ти летним опытом использования обоих в том числе (от backend до frontend, ну и embedded сверху).
Да и в тырнетах сломано уже немало копий и написано про то уже сотни статей. Вот например статья из мира embedded. И поверьте мне в не-embedded местами все намного хуже.
-6
Поправьте имя: Мачей Чижевский.
0
[offtop]
Оно уже издавна как-то стагнирует — почти не развивается, а баги и дыры годами (или вовсе) не фиксят…
Вот например мой баг-репорт (ставший со временем почему-то FR), с уже готовым патчем, на минуточку 3-х летней давности.
И там такого просто тихий ужас… Давно бы форкнуть уже, но пишу в основном на чистых сях (редко пользую c++, и если уж изпользую, то без template-ов — архитектура у crypto++ такая, что местами ноги поломать можно). Короче не мое оно.
А вот рекомендовать «в реальных проектах, в целях безопасности» я бы его сегодня точно никому не стал.
[/offtop]
По сабжу: за подборку спасибо…
В целях безопасности… crypto++Вы серьезно?
Оно уже издавна как-то стагнирует — почти не развивается, а баги и дыры годами (или вовсе) не фиксят…
Вот например мой баг-репорт (ставший со временем почему-то FR), с уже готовым патчем, на минуточку 3-х летней давности.
И там такого просто тихий ужас… Давно бы форкнуть уже, но пишу в основном на чистых сях (редко пользую c++, и если уж изпользую, то без template-ов — архитектура у crypto++ такая, что местами ноги поломать можно). Короче не мое оно.
А вот рекомендовать «в реальных проектах, в целях безопасности» я бы его сегодня точно никому не стал.
[/offtop]
По сабжу: за подборку спасибо…
+3
Какой набор S-блоков используется в ГОСТ 34.311-95 (ГОСТ Р 34.11-94)?
Реализован ли ГОСТ Р 34.11-2012?
Реализован ли ГОСТ Р 34.11-2012?
0
Реализован только ГОСТ 34.11-94 по RFC 5831, использован тестовый набор блоков оттуда же (gosthash.c).
0
Пользуясь случаем, попиарю бесплатный и открытый RHash (там и библиотека, и консольный калькулятор хэш-сумм). Там тоже большое количество хэш-функций реализовано на чистом Си и это можно использовать в продакшн, потому что библиотека неплохо протестирована под множеством платформ, многие грабли исправлены и автор — весьма педантичный и аккуратный человек. Он, кстати, есть на Хабре — rushless. RHash есть в стандартных репозиториях debian и ubuntu.
+5
Sign up to leave a comment.
Большая подборка функций хеширования на Github