如何使用GPG加密对HDFS中存在的文件进行加密/ Decrpyt

时间:2018-10-05 22:07:18

标签: java scala apache-spark encryption gnupg

我想编写作业(在Spark / JAVA中都是这样),该作业应该对HDFS中存在的文件进行加密和解密,而不用GPG复制回本地。

我有他人的公共密钥来加密文件,我有私人的密钥来解密他人的文件。虽然加密输入文件是.gpg格式,而解密输出文件应该是.gpg

任何建议和代码都会有所帮助

1 个答案:

答案 0 :(得分:0)

实际上,我们的生产过程确实使用PGP编写加密。 您可以通过设置加密编解码器来实现。 不幸的是,AFAIK尚未准备好将编码解码器用于PGP / GPG。 您可以使用以下命令:https://github.com/spotify/hadoop-openpgp-codec,但请注意它指出它不完整,因此不应用于生产。 实际上,我们以它为起点,并在Scala中编写了自己的文章来激发灵感。不幸的是,这是为了工作而做的,我无法分享。 您还必须添加逻辑来管理密钥。我们仅使用它来加密,因此我们只捆绑了公钥,但是要解密,您必须管理私钥的安全性。

您已经准备好编解码器并在spark作业中对其进行编译,可以使spark通过类似以下内容的方式自动加密和解密:

    context.hadoopConfiguration.set("mapreduce.output.fileoutputformat.compress", "true")
    context.hadoopConfiguration.set("mapreduce.output.fileoutputformat.compress.codec", "com.spotify.hadoop.openpgp.OpenPgpCodec")