Я пытался использовать Crypt::OpenPGP, но столкнулся с некоторыми проблемами при расшифровке зашифрованных сообщений GPG. Итак, теперь я ищу альтернативы. Я хотел бы, чтобы модуль мог полностью выполнять шифрование/дешифрование в памяти, потому что мы хотели бы гарантировать, что данные никогда не будут отображаться на диске в незашифрованном состоянии. Сервер будет иметь gpg
версии 2.x, которую поддерживают не все модули. Есть ли хороший модуль для меня, который будет работать? Я нахожу просеивание этих модулей немного сложным, потому что, похоже, не существует одного «лучшего» модуля, и они разного возраста.
Perl PGP в шифровании памяти, использующем GPG
Ответы (1)
Как сказал Роб, лучшее решение — использовать XS.
Пожалуйста, ознакомьтесь с этой книгой: Расширение и внедрение Perl а>.
Эта книга очень хороша для тех, кто немного знает C и C++ и хочет погрузиться в XS. Также необходимо знание Perl.
По сути, XS — это просто API, предоставляемый Perl для доступа ко всем структурам данных:
- скаляры
- шарики
- хеши
- использованная литература
- массивы
- и т.д
Модули XS состоят из 2 разделов:
- один с кодом C или C++ (в зависимости от того, как вы говорите h2xs)
- один с кодом, который также является C/C++, но с некоторыми небольшими отличиями в синтаксисе, которые превращаются в C/C++ с помощью xspp
Вам придется написать тесты для вашего кода, чтобы убедиться, что он работает так, как вы хотите.
При написании XS я настоятельно рекомендую вам использовать:
- gdb с Perl, скомпилированный с отладочными символами
- valgrind, чтобы убедиться, что у вас нет утечек памяти
Если у вас могут возникнуть проблемы с производительностью, рекомендую вам использовать callgrind, так как это один из лучшие инструменты профайлеров там. Вы можете просмотреть вывод callgrind, используя kcachegrind.
Отправной точкой является h2xs. Это утилита, которая генерирует весь скучный шаблон, с которым вы не хотите иметь дело. Чтобы получить некоторое представление о h2xs, прочитайте это руководство.
Имейте в виду, что h2xs сгенерирует для вас Makefile.PL, который после запуска perl Makefile.PL
сгенерирует стандартный файл Makefile
. С этого момента вы можете make
свой модуль. Убедитесь, что вы указали Makefile.PL
на связь с libpgp. Также убедитесь, что у вас есть -g
для компиляции с отладочными символами. Вы попадете в ситуации, когда вам придется отлаживать с помощью gdb и необходимы символы отладки.
Кроме того, вот презентация XS под названием Baby XS. Это будет очень хорошее введение в XS.
Я также предлагаю вам приобрести эту книгу, она потрясающая. Я использовал его, когда писал XS-код, и он мне очень помог (и до сих пор помогает).
Если вы не хотите иметь дело со всеми XS, вы можете использовать более легкий Inline::C или Встроенный::CPP. Но для знать основы XS API.
Я думаю, вам будет немного сложно начать, но как только вы освоите некоторые основы XS, все станет намного проще. Преимущество изучения XS заключается в том, что вы больше не привязаны к кому-то, кто предлагает поддержку модуля XS, вы сможете написать свой собственный модуль или использовать фрагменты других модулей XS. Если вы скажете, что Crypt::OpenPGP не имеет необходимых вам функций, вы можете написать свой собственный.