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

标签 python encryption gnupg pycrypto apache-nifi

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

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

我在 Apache NiFi 的 Configure Processor 窗口中没有看到任何名为 RSA 的内容。

最佳答案

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

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

  • 可以使用GPG对数据进行加解密,NiFi对GPG解密提供一流的支持。 GPG key 使用底层 DSA/RSA key 以及 AES 加密数据,因此这实际上是相同的过程(非对称加密)。
  • 您可以使用 ExecuteScript处理器运行执行解密的小脚本。该处理器支持 Ruby、Groovy、Lua、Javascript 和 Python*。不幸的是,Python 的局限性在于 Jython 不支持本地库(例如 pycrypto)。一种可能的解决方案是使用 JyNI它允许 Jython 加载 CPython 库,但我没有在此上下文中对其进行评估。如果您熟悉 Groovy 和 BouncyCaSTLe 或 Ruby 和 OpenSSL,您可以使用其中任何一种语言编写解密脚本,只需几行代码。
  • 如果你真的想使用已有的 Python 代码,你可以通过 ExecuteProcess 在命令行上调用它。或 ExecuteStreamCommand .

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

关于python - 使用 Apache NiFi 解密基于 RSA 的加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41943147/

相关文章:

python - 谁能帮助我使用以下示例的正则表达式?

python - 使用 pandas.DataFrame.melt() 与 seaborn 一起绘制数据

java - 充气城堡打开 gpg2 公钥

git - 如何找到 git 存储库中未签名的添加内容?

python - Cython/numpy 与纯 numpy 的最小二乘拟合

python - 计算一系列值变化的次数

javascript - 如何使用 iv 和 key 与 cryptoswift 进行 AES 解密?

java - 如何在java中解密(包括我的代码片段)

android - RSA 加密/解密在 android 2.2 上崩溃

key - 如何显示我刚刚用 gpg 生成的 key 对的实际公钥/私钥?