LINUX.ORG.RU

Криптография в линукс и С++

 , ,


0

2

Доброго времени суток.

Сегодня принесли ко мне такую задачу: нужно зашифровать, а потом расшифровать текст в файле средствами ядра линукса и С++.

Я просто никогда не пользовался Cryptho API или что там в линуксе. С чего мне начать? Где посмотреть какие функции для шифрования «plain text» предоставляет линукс? Может есть какие либы для С++...

Прога должна быть написана именно на С++ и использовать криптографические функции линукса.

Прога должна быть написана именно на С++
использовать криптографические функции линукса.

Взаимоисключающие параграфы.

Ядро на С. Интерфейс к нему, тоже на С. Программа на С++ может быть написана только через extern. И это будет не C++, а C с классами.

Ну и что значит «линукс»? Чисто ядро, или часть coreutils, или может и gpg какой-нить подойдёт.

RazrFalcon ★★★★★ ()
Ответ на: комментарий от RazrFalcon

Чистый С тоже подойдет. Можно использовать утилиты. Если можете посоветуйте что нить простое, а там уже разберусь походу.

riki34 ()
Ответ на: комментарий от riki34

Можно использовать утилиты

Утилиты или библиотеки?

Если утилиты, то задача сводится к системному вызову system()

mersinvald ★★★★ ()
Ответ на: комментарий от Vsevolod-linuxoid

В том то и дело что не писал. Обычно пишу сервера на Python/Php и Фронтенд на JavaScript. С/С++ знаю основы но вот под линуксом не писал....

riki34 ()
Ответ на: комментарий от Vsevolod-linuxoid

Да мне просто прогу написать которая будет шифровать текст из файла «средствами линукс». Я не собираюсь серьезно этим заниматься так как нет надобности.

riki34 ()
Ответ на: комментарий от mersinvald

Да это не мое даже, вот принесли и сказали сделай. Я вот сижу гуглю что да как в линуксе это делается но что то не нашел ничего кроме реализаций разных алгоритмов для ядра.

riki34 ()
Ответ на: комментарий от riki34

Оставь ядро в покое, используй библиотеки, тот же openssl или любую другую популярную криптографическую библиотеку.

Хотя джависту будет напряжно

mersinvald ★★★★ ()
Ответ на: комментарий от riki34

Добро пожаловать в мир UNIX, где даже для простых вещей нужно изучать много теории. В отличии от винды, философия *nix «от понимания — к действию». Чтобы что-то сделать, почти всегда нужно понимать, как это работает, порог вхождения очень высок.

Это если сам. Ты можешь написать алгоритм, ответственный за шифрование, а его портирование под Linux поручить на сторону, но это — в Job.

Vsevolod-linuxoid ★★★★★ ()
Ответ на: комментарий от mersinvald

Да я учил С/C++, ещё помню кое что. Просто у нас работы на С++ не оч есть, на шарпе работать не хочу вот и был выбор мобильные технологии или веб, я решил что веб норм будет.

Спасибо, хоть что то. Openssl - посмотрим что там есть, а то юзал ток для шифрования ssh ключей до этого.

riki34 ()
Ответ на: комментарий от Vsevolod-linuxoid

Ок. Но у меня есть правило, если я делаю что то слишком сложно значит я делаю что то неправильно...

riki34 ()
Ответ на: комментарий от riki34

Тогда тебе будет вдвойне трудно в C и C++ (это назные языки, черт возьми, на недо их писать через слэш) за пределами уровня «новичок» и в linux.

Многие вещи, на самом деле, намного проще, но надо понимать как оно работает под капотом

mersinvald ★★★★ ()

Да уж, насоветовали тут.

Если нужно именно C++ (а лучше уж C++, чем plain C), то идете сюда: awesome-cpp, в раздел Cryptography. Выбираете то, что вам больше понравится (подходит по лицензии). Разбираетесь по документации/примерам и все.

Я в свое время пользовался Crypto++, хорошая штука, но если нет опыта с C++, то от обилия шаблонов может поплохеть. Чуть позже появился Botan, вроде как API у него попроще.

eao197 ★★★★★ ()
Ответ на: комментарий от I-Love-Microsoft

Сомнительно. Это ж все упирается в сертификацию по ГОСТам. Например, торговый клиент Альфа-Банка использует че-то сильно упоротое (не портируемое, с закрытыми исходниками, заточенное чисто под шифрование) от сторонней компании просто для использования какой-то модификации RSA (или чистого RSA - структура ключей такая же, но алгоритм я не реверсил, потому не могу сказать со 100% уверенностью).

Грубо говоря, проще купить лицензированный софт под шифрование, чем самим писать и получать на код лицензию. А в случае ошибок - выставлять нехилый иск против производителя.

aido ★★ ()
Ответ на: комментарий от eao197

Спасибо большое за понимание :) Да Crypto++ именно то что мне надо.

riki34 ()
Ответ на: комментарий от aido

Это ж все упирается в сертификацию по ГОСТам.

что упирается? про наши ГОСТы никто, кроме нашей страны, не знает. в мире есть ISO.

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

Iron_Bug ★★★★ ()

нужно зашифровать, а потом расшифровать
средствами ядра

тебе видимо нужно чтот типо такого - http://www.chronox.de/libkcapi.html

There is a plugin to OpenSSL to support AF_ALG

или такое)

vvviperrr ★★★★★ ()
Последнее исправление: vvviperrr (всего исправлений: 2)
Ответ на: комментарий от riki34

средствами линукс

определись, болезненный, нужно ли тебе юзать ядерное crypto api, или же нет

vvviperrr ★★★★★ ()
Ответ на: комментарий от Iron_Bug

про это я не спорю. Дело в том, что шифрование не так часто в открытую бывает нужно (это вам не клоны mount-a в винде, среди которых платные золотые молотки UltraIso, DaemonTools и прочие). Веселья добавляет нативная поддержка процессорами алгоритмов шифрования - по факту это означает, что под каждый новый процессор надо писать свою реализацию крипто-апи. Единственное, быть может, исключение здесь - GnuPG, но че-то я не часто (то есть - ни разу) видел в виндовых разработках её.

Главным посылом было вот это:

Грубо говоря, проще купить лицензированный софт под шифрование, чем самим писать и получать на код лицензию. А в случае ошибок - выставлять нехилый иск против производителя.

aido ★★ ()
Ответ на: комментарий от RazrFalcon

Программа на С++ может быть написана только через extern. И это будет не C++, а C с классами.

Не. Вызов внешних колов никак не ограничивает выбор срецтв йезыка. Если захочешь это будет С++11, без классов, но с лямбдами :) «Но зачем?»

slackwarrior ★★★★★ ()
Ответ на: комментарий от mersinvald

Если джавист знает джавный интеропинвокинг жнями (или имел дело с андроедом) — ничего напряжного :)

slackwarrior ★★★★★ ()
Ответ на: комментарий от Iron_Bug

ISO, это сборник документов за бешеное бабло, куда пропихнуть любую хрень можно за опять же бешеное бабло. Никто в своем уме для гос структур не будет использовать исо, у каждой нормальной страны свои стандарты на криптографию. Поглядите как выглядят настоящие стандарты у той же сшп, это емнить ansi. никто этих барыг туда на пушечный выстрел не подпустит.

Morin ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.