使用 Apache NiFi 解密基于 RSA 的加密
Decrypt RSA based encryption using Apache NiFi
我正在使用 python 脚本,该脚本使用 pycrypto 通过 RSA 加密文件。我在加密过程中使用了encrypt(data, 2048)
函数。
现在,我正在尝试使用 Apache NiFi 中的解密处理器解密该加密文件,但我不确定哪个 KDF
和 Encryption 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 等使用的模型。
我正在使用 python 脚本,该脚本使用 pycrypto 通过 RSA 加密文件。我在加密过程中使用了encrypt(data, 2048)
函数。
现在,我正在尝试使用 Apache NiFi 中的解密处理器解密该加密文件,但我不确定哪个 KDF
和 Encryption 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
orExecuteStreamCommand
在 command-line 上调用它。
一个悬而未决的问题 -- 您如何使用 RSA 来加密文件?具有 2048 位密钥长度的 RSA 只能加密 245 个字节。如果您正在加密文件,您更有可能希望使用混合密码系统,您可以在其中使用 randomly-generated AES 密钥加密任意数据,然后仅使用 RSA 加密该 AES 密钥。这也会快得多。这是 SSL、S/MIME、OpenPGP 等使用的模型。