使用 Apache NiFi 解密基于 RSA 的加密

Decrypt RSA based encryption using Apache NiFi

我正在使用 python 脚本,该脚本使用 pycrypto 通过 RSA 加密文件。我在加密过程中使用了encrypt(data, 2048)函数。

现在,我正在尝试使用 Apache NiFi 中的解密处理器解密该加密文件,但我不确定哪个 KDFEncryption Algorithm 到 select。

我在 Apache NiFi 的 Configure Processor window 中没有看到任何称为 RSA 的内容。

目前,EncryptContent处理器不支持任意RSA解密。我建议您 file a Jira 请求此增强功能(不要被显示打开和关闭之间差异的图表吓到;我们目前正处于生命周期的阶段,最近发布了一个版本,现在所有反馈正在为下一个版本生成新票证)。

对于即时解决方案,我有一些建议:

  • 您可以使用GPG对数据进行加解密,NiFi提供first-class对GPG解密的支持。 GPG 密钥使用基础 DSA/RSA 密钥以及 AES 加密数据,因此这实际上是相同的过程(非对称加密)。
  • 您可以使用允许 Jython 加载 CPython 库的 ExecuteScript processor to run a small script which performs the decryption. The processor supports Ruby, Groovy, Lua, Javascript, and Python*. Unfortunately the limitation on Python is that Jython doesn't support native libraries (such as pycrypto). One possible solution is to use JyNI,但我没有在此上下文中对其进行评估。如果您熟悉 Groovy & BouncyCastle 或 Ruby & OpenSSL,则只需几行代码即可使用其中任何一种语言编写解密脚本。
  • 如果您真的想使用已有的 Python 代码,可以通过 ExecuteProcess or ExecuteStreamCommand 在 command-line 上调用它。

一个悬而未决的问题 -- 您如何使用 RSA 来加密文件?具有 2048 位密钥长度的 RSA 只能加密 245 个字节。如果您正在加密文件,您更有可能希望使用混合密码系统,您可以在其中使用 randomly-generated AES 密钥加密任意数据,然后仅使用 RSA 加密该 AES 密钥。这也会快得多。这是 SSL、S/MIME、OpenPGP 等使用的模型。