В настоящее время процессор EncryptContent
не поддерживает произвольное шифрование RSA. Я бы предложил вам file a Jira с просьбой об этом дополнении (не бойтесь графика, показывающего несоответствие между открытыми & закрытыми, мы в настоящее время находимся на этапе жизненного цикла, когда релиз вышел недавно, и теперь вся обратная связь генерирует новые билеты для следующего выпуска).
Для немедленного решения, у меня есть несколько предложений:
- Вы можете использовать GPG для шифрования и дешифрования данных, и Nifi обеспечивает поддержку первого класса для GPG дешифрования. Ключ GPG использует базовый ключ DSA/RSA вместе с AES-шифрованием для данных, поэтому это будет фактически тот же процесс (асимметричное шифрование).
- Вы можете использовать процессор
ExecuteScript
для запуска небольшого скрипта, который выполняет дешифрование. Процессор поддерживает Ruby, Groovy, Lua, Javascript и Python *. К сожалению, ограничение на Python заключается в том, что Jython не поддерживает родные библиотеки (например, pycrypto). Одним из возможных решений является использование JyNI, который позволяет Jython загружать библиотеки CPython, но я не оценил его в этом контексте. Если вам удобно с Groovy & BouncyCastle или Ruby & OpenSSL, вы можете написать скрипт расшифровки на любом из этих языков только с несколькими строками кода.
- Если вы действительно хотите использовать код Python, который у вас уже есть, вы можете вызвать его в командной строке через
ExecuteProcess
или ExecuteStreamCommand
.
Один непонятный вопрос - как вы используете RSA для шифрования файлов? RSA с длиной ключа 2048 бит может шифровать только 245 байт. Если вы шифруете файлы, скорее всего, вы захотите использовать гибридную криптосистему, где вы шифруете произвольные данные с помощью произвольно созданного ключа AES, а затем шифруете только этот ключ AES с RSA. Это будет намного быстрее. Это модель, используемая SSL, S/MIME, OpenPGP и т. Д.
Благодарим вас за предложения. Я фактически использую AES_CBC с SHA256 для шифрования моих данных симметрично. Мой скрипт python затем шифрует этот симметричный ключ, используя RSA 'pycrypto''. Итак, с помощью шифрования GPG он будет автоматически шифровать базовые данные с помощью AES, а также использовать PKI снаружи? – summerNight
Да, GPG будет инкапсулировать AES-шифрование данных, подписать шифрованный текст с помощью закрытого ключа отправителя и зашифровать ключ AES с открытым ключом получателей. Похоже, есть библиотека Python для [python-gnupg] (https://github.com/isislovecruft/python-gnupg), которая может сделать это проще для вас на отправляющей стороне. – Andy
Вам известно, как узнать, как расшифровать его с помощью nifi, учитывая, что я могу использовать python-gnupg для генерации зашифрованного файла? – summerNight