我使用生成了 gpg 公钥和私钥gnupg (2.4.0)在 Windows cmd 上(我们称之为:源机器)加密了一个.csv 文件。
现在我在 DataBrick 工作区并创建了具有以下配置的集群:
运行时环境:12.2 LTS(包括 Apache Spark 3.3.2、Scala 2.12)
节点类型:Standard_f4 机器
*DataBrick GPG 版本:2.3.1
将生成的公钥和私钥文件 (.pgp) 放入 DataBrick 文件存储 (DataBrick 本地文件夹)
创建了一个 Notebook 来编写 shell 命令
执行以下 shell 命令来导入密钥(成功)
%sh gpg --import /dbfs/FileStore/GPG/PUBkey.gpg gpg --batch --no-tty --yes --pinentry-mode = loopback --passphrase“1234” --import /dbfs/FileStore/GPG/PVTkey.gpg
并按照以下命令解密文件:(无响应)
%sh gpg --no-tty --yes --always-trust --pinentry-mode = loopback --yes --passphrase“1234” --output /dbfs/FileStore/GPG/File1.csv --decrypt /dbfs/FileStore/GPG/File1_csv.gpg
但它不会返回任何输出解密文件,也不会返回任何错误或警告消息。
现在奇怪的是,如果我在生成密钥和加密文件的源系统中解密相同的加密文件,它可以正常工作并生成解密的文件。
此外,如果我使用相同的公钥通过以下命令加密 DATABRICK 环境中的 .CSV 文件,然后使用相同的 POINT 4 命令顺利解密生成的加密文件。
为了这个目的,我测试了数据文件和密钥的 .asc 和 .gpg 扩展名,但没有成功。
此外,我尝试在 DataBrick 中使用 GNUPG Python 库并编写了以下代码,但它显示相同的行为:执行正常,但没有解密文件作为输出。
import gnupg
import codecs
try:
gpg = gnupg.GPG(gnupghome='/dbfs/FileStore/homed')
except TypeError:
gpg = gnupg.GPG(homedir='/dbfs/FileStore/homed')
with open('/dbfs/FileStore/GPG/File1_csv.gpg', 'rb') as f:
status = gpg.decrypt_file(f, passphrase='1234',output='/dbfs/FileStore/GPG/File1.csv')