Pull to refresh

Comments 13

Алгоритмы предполагается использовать в целях обучения — в реальных проектах рекомендуется в целях безопасности использовать существующие библиотеки

Кроме безопасности, есть еще одна причина — plain C реализация как правило медленная. Production-grade(sic :) решения затачиваются под конкретное железо (AVX, SSE, и тд.)

Ваш К.О.
«plain C» vs. «Production-grade»
Мне кажется, что вы здесь попутали таки теплое с мягким — на том же «plain C» можно плодить вполне кошерные «Production-grade» решения.
Да и в целом не совсем правда (не холивара ради): сишное решение при прочих равных (если руками написано) будет не много медленнее чем оно же на ASM-е. И уж всяко быстрее чем например на c++ (тот же Crypto++), хотя бы потому, что в чистых си нет: exception handling, «слепые» аллокаторы и вызовы/возвраты в стеке, rtti и иже с ними — соответственно отсутствует overhead на все это добро.
сишное решение при прочих равных (если руками написано) будет не много медленнее чем оно же на ASM-е

Например, у интела есть особые инструкции (пруф #1) для быстрого вычисления некоторых хешей.

Plain-C — я называю портабельное решение, которое использует исключительно битовые операции и прочие возможности, которые есть в стандартном Си. Такое решение будет (а) компилироваться подо все (б) тормозить.

Да, можно использовать интринсики, и писать «как-бы» на Си. Это имеет примерно такое же отношение к Plain-C, что и инлайн ассемблер. Последний кстати в gсс просто божественный, так как нормально умеет взаимодействовать с оптимизатором.
сишное решение при прочих равных… быстрее чем например на c++
Кстати кейворда «С++» в моем коментарии не было вообще, странно, что вы решили мне объяснить преимущества Си перед C++.

Вобще говоря, ИМХО вы не правы. Если есть желание, можно обсудить конкретные кейсы. Например, я не понял что вы хотели сказать этим
«слепые» аллокаторы и вызовы/возвраты в стеке
Кстати кейворда «С++» в моем коментарии не было вообще
Это как бы да, но ваш коммент был на цитату в оригинале "… использовать существующие библиотеки… например, Crypto++ для C++".
Потому и решил, как вы выразились, «объяснить преимущества Си перед C++».
Если есть желание, можно обсудить конкретные кейсы
Простите но холиварить на эту тему желания нет вовсе. Оно у меня почти в крови, выстрадано более чем 20-ти летним опытом использования обоих в том числе (от backend до frontend, ну и embedded сверху).
Да и в тырнетах сломано уже немало копий и написано про то уже сотни статей. Вот например статья из мира embedded. И поверьте мне в не-embedded местами все намного хуже.
Ну нет так нет.

Жаль, я рассчитывал узнать про «слепые аллокаторы и вызовы/возвраты на стеке». Хотя программировать на си/c++ я начал не совсем вчера, мне это мало что говорит.
Поправьте имя: Мачей Чижевский.
[offtop]
В целях безопасности… crypto++
Вы серьезно?
Оно уже издавна как-то стагнирует — почти не развивается, а баги и дыры годами (или вовсе) не фиксят…
Вот например мой баг-репорт (ставший со временем почему-то FR), с уже готовым патчем, на минуточку 3-х летней давности.
И там такого просто тихий ужас… Давно бы форкнуть уже, но пишу в основном на чистых сях (редко пользую c++, и если уж изпользую, то без template-ов — архитектура у crypto++ такая, что местами ноги поломать можно). Короче не мое оно.
А вот рекомендовать «в реальных проектах, в целях безопасности» я бы его сегодня точно никому не стал.
[/offtop]

По сабжу: за подборку спасибо…
Какой набор S-блоков используется в ГОСТ 34.311-95 (ГОСТ Р 34.11-94)?
Реализован ли ГОСТ Р 34.11-2012?
Так и запишем. Для 34.11-94 более популярен/осмысленен набор s-блоков КриптоПро из RFC 4357.
Пользуясь случаем, попиарю бесплатный и открытый RHash (там и библиотека, и консольный калькулятор хэш-сумм). Там тоже большое количество хэш-функций реализовано на чистом Си и это можно использовать в продакшн, потому что библиотека неплохо протестирована под множеством платформ, многие грабли исправлены и автор — весьма педантичный и аккуратный человек. Он, кстати, есть на Хабре — rushless. RHash есть в стандартных репозиториях debian и ubuntu.
Спасибо, в копилочку :)
Sign up to leave a comment.

Articles