Python 使用ApacheNIFI解密基于RSA的加密

Python 使用ApacheNIFI解密基于RSA的加密,python,encryption,gnupg,pycrypto,apache-nifi,Python,Encryption,Gnupg,Pycrypto,Apache Nifi,我正在使用一个python脚本,它使用pycrypto来使用RSA加密文件。我在加密期间使用了encrypt(data,2048)函数 现在,我正在尝试使用ApacheNIFI中的解密处理器对加密文件进行解密,我不确定要选择哪个KDF和加密算法 在Apache NiFi的配置处理器窗口中,我没有看到任何名为RSA的内容。目前,加密内容处理器不支持任意RSA解密。我建议您请求此增强(不要被显示打开与关闭之间差异的图表所吓倒;我们目前正处于生命周期的阶段,最近发布了一个版本,现在所有的反馈都在为下一

我正在使用一个python脚本,它使用pycrypto来使用RSA加密文件。我在加密期间使用了
encrypt(data,2048)
函数

现在,我正在尝试使用ApacheNIFI中的解密处理器对加密文件进行解密,我不确定要选择哪个
KDF
加密算法


在Apache NiFi的
配置处理器
窗口中,我没有看到任何名为
RSA的内容。

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

对于即时解决方案,我有几点建议:

  • 您可以使用GPG对数据进行加密和解密,NiFi为GPG解密提供了一流的支持。GPG密钥在对数据进行AES加密的同时使用底层DSA/RSA密钥,因此这实际上是相同的过程(非对称加密)
  • 您可以使用处理器运行执行解密的小脚本。处理器支持Ruby、Groovy、Lua、Javascript和Python*。不幸的是,Python的限制是Jython不支持本机库(如pycrypto)。一种可能的解决方案是使用允许Jython加载CPython库的方法,但我没有在本文中对其进行评估。如果您熟悉Groovy&BouncyCastle或Ruby&OpenSSL,那么只需几行代码就可以用这两种语言中的任何一种编写解密脚本
  • 如果您真的想使用已有的Python代码,可以通过或在命令行上调用它

一个悬而未决的问题--如何使用RSA加密文件?密钥长度为2048位的RSA只能加密245字节。如果要加密文件,则更可能需要使用混合加密系统,即使用随机生成的AES密钥加密任意数据,然后使用RSA仅加密该AES密钥。这也会快得多。这是SSL、S/MIME、OpenPGP等使用的模型。

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

对于即时解决方案,我有几点建议:

  • 您可以使用GPG对数据进行加密和解密,NiFi为GPG解密提供了一流的支持。GPG密钥在对数据进行AES加密的同时使用底层DSA/RSA密钥,因此这实际上是相同的过程(非对称加密)
  • 您可以使用处理器运行执行解密的小脚本。处理器支持Ruby、Groovy、Lua、Javascript和Python*。不幸的是,Python的限制是Jython不支持本机库(如pycrypto)。一种可能的解决方案是使用允许Jython加载CPython库的方法,但我没有在本文中对其进行评估。如果您熟悉Groovy&BouncyCastle或Ruby&OpenSSL,那么只需几行代码就可以用这两种语言中的任何一种编写解密脚本
  • 如果您真的想使用已有的Python代码,可以通过或在命令行上调用它

一个悬而未决的问题--如何使用RSA加密文件?密钥长度为2048位的RSA只能加密245字节。如果要加密文件,则更可能需要使用混合加密系统,即使用随机生成的AES密钥加密任意数据,然后使用RSA仅加密该AES密钥。这也会快得多。这是SSL、S/MIME、OpenPGP等使用的模型。

感谢您的建议。实际上,我使用AES_CBC和SHA256对数据进行对称加密。然后,我的python脚本使用
pycrypto的
RSA加密对称密钥。因此,使用GPG加密,它是否会自动使用AES加密底层数据,并在外部使用PKI?是的,GPG将封装数据的AES加密,使用发送方的私钥对密文进行签名,并使用接收方的公钥对AES密钥进行加密。似乎有一个Python库可以让您在发送端更容易地使用它。鉴于我能够使用Python gnupg生成加密文件,您是否知道如何使用nifi对其进行解密的教程?我没有一个好的教程——它非常简单。将模式设置为解密,将算法设置为
PGP
/
PGP\u ASCII\u ARMOR
,具体取决于您是否对输出进行Base64编码,并填充PGP私钥环文件位置和密码短语。感谢您的建议。实际上,我使用AES_CBC和SHA256对数据进行对称加密。然后,我的python脚本使用
pycrypto的
RSA加密对称密钥。因此,使用GPG加密,它是否会自动使用AES加密底层数据,并在外部使用PKI?是的,GPG将封装数据的AES加密,使用发送方的私钥对密文进行签名,并使用接收方的公钥对AES密钥进行加密。似乎有一个Python库可以让您在发送端更容易地使用它。鉴于我能够使用Python gnupg生成加密文件,您是否知道如何使用nifi对其进行解密的教程?我没有一个好的教程——它非常简单。将模式设置为解密,算法设置为
PGP
/
PGP\u ASCII\u ARMOR
,具体取决于