You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Databricks解密test.zip.asc文件失败,寻求技术解决方案

问题描述

有一个包含3个TXT文件的test.zip.asc文件,使用本地工具可正常解密,但通过以下Databricks的Shell脚本解密时失败。

Databricks原代码

%sh
#Apply looping for each file in the source folder.
for entry in /dbfs/mnt/acc/Temp/*
do

#Create input variable
input=test.zip.asc
echo $input

#create output variable
output=test.zip
echo=$output


#import private key
gpg --no---batch --import /dbfs/mnt/acc/pgp/PrivateKey.asc

#start decryption
gpg --no--tty --batch --yes --ignore-mdc-error --pinentry-mode=loopback --passphrase-fd 1 --passphrase-file /dbfs/mnt/acc/pgp/Passphrase.txt --output /dbfs/mnt/acc/out/$output --decrypt /dbfs/mnt/acc/input/$input

done

执行输出

test.zip.asc

test.zip

gpg:no valid openPGP data found.

gpg:Total number proessed:0

gpg:enrypted with RSA key ,ID A48FAF69A4E7B316

gpg:decryption failed : No secret key

错误原因及修复方案

1. GPG参数语法错误

  • 密钥导入命令中的--no---batch多了一个横杠,应为--no-batch,无效参数导致密钥未成功导入,触发no valid openPGP data found和No secret key错误。
  • 解密命令中的--no--tty多了一个横杠,应为--no-tty。
  • echo=$output是语法错误,应为echo $output,该错误会导致变量输出异常。

2. 密码参数冲突

解密命令同时使用--passphrase-fd 1(从标准输入读密码)和--passphrase-file(从文件读密码),两个参数冲突,需移除--passphrase-fd 1。

3. 循环未实际生效

脚本中遍历了/dbfs/mnt/acc/Temp/*但未使用循环变量$entry,硬编码了input=test.zip.asc,若要批量处理目录下的文件,需利用循环变量。

4. 路径与权限验证

确保/dbfs/mnt/acc/pgp/PrivateKey.asc和/dbfs/mnt/acc/pgp/Passphrase.txt路径正确,且Databricks运行脚本的用户拥有读取权限;可在导入密钥后添加gpg --list-secret-keys验证密钥是否导入成功。

修复后的代码

%sh
# 遍历源目录下的所有.asc加密文件
for entry in /dbfs/mnt/acc/Temp/*.asc
do
    # 使用循环变量作为输入文件路径
    input="$entry"
    echo "正在处理文件: $input"

    # 自动生成输出文件名(移除.asc后缀)
    output_filename=$(basename "${input%.asc}")
    echo "输出文件: $output_filename"

    # 导入私钥,修复参数错误
    gpg --no-batch --import /dbfs/mnt/acc/pgp/PrivateKey.asc
    # 验证私钥是否成功导入
    gpg --list-secret-keys

    # 执行解密,修复参数冲突与语法错误
    gpg --no-tty --batch --yes --ignore-mdc-error --pinentry-mode=loopback \
        --passphrase-file /dbfs/mnt/acc/pgp/Passphrase.txt \
        --output /dbfs/mnt/acc/out/$output_filename \
        --decrypt "$input"
done

内容的提问来源于stack exchange,提问作者Rudrashis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 06:45:30