我可以使用 GnuPG 加密并使用 OpenSSL 解密吗?

信息安全 linux openssl AES gnupg 打开pgp
2021-08-24 12:39:09

我想知道为什么这在 Linux 上不起作用?

gpg --cipher-algo AES256 -c -o test.zip.enc test.zip 
Enter passphrase:

openssl enc -AES-256-CBC -d -in test.zip.enc -out test.zip
enter aes-256-cbc decryption password:
bad magic number

举个例子,我有一个应用程序,我在 Linux 上使用 GnuPG 加密文件,我希望 Mac 用户能够解密它而无需安装其他软件(OpenSSL 预装在 OS X 上)。

4个回答

OpenSSL 实现了 X.509 标准,而 GnuPG 实现了 OpenPGP。虽然两者都使用大部分相同的加密算法,但有很多重叠,但两种协议都有自己的文件格式和细微差别,尤其是在对称加密的操作模式方面。

OpenSSL 和 GnuPG 几乎可用于所有操作系统,而 GnuPG 仅默认随大多数 Linux 发行版提供,但 OpenSSL 可用于几乎所有 unixoid 操作系统。

如果你坚持使用 GnuPG,也可以看看 GnuPG 的gpgsm组件,它是与 OpenSSL 兼容的 X.509 的实现(但由于格式不同,不能使用 OpenPGP 密钥,因此需要 X.509 密钥)。

OpenPGP (GPG) 和 OpenSSL 为(略微)不同的用途使用不同的加密格式。这些格式不可互换。特别是,OpenSSL 无法解析 OpenPGP 加密数据。

我建议在 Linux 和 OS X 上使用相同的软件。

OpenSSL 和 GPG 具有相同算法的不同实现,因此与当前版本不兼容,例如。不同的魔法位(直到有人想出一个在两者之间转换的中间软件,例如翻译器或虚拟机)。

这个问题出现在每一个新技术/行业(参见 NTSC 和 PAL、MacOS 和 Windows、柴油与汽油),甚至可能仍未解决。

OpenSSL 还预装了大多数版本的 Linux,例如。CentOS、Ubuntu、Red Hat 和 Arch Linux,所以要解决您的问题,请使用 OpenSSL 进行加密,以便“Mac 用户无需安装其他软件即可解密”。

另一种解决方案是https通过网络浏览器为类似算法实现的(TLS)发送文件(如果您的加密原因是文件的安全传输)。

在最知名的 Linux 发行版上,openssl全新安装后已加载。

我在写书时也遇到了同样的问题,因为我主要使用 Linux 编写文本和 MacOSX 来出版电子书。因为 Linux 是我常用的操作系统,所以我只有在 Linux 上才有 gpg 密钥,所以我使用安装后在两个操作系统上都安装的 OpenSSL。

在我的脚本中,我使用的两个操作系统都使用:

加密:

openssl des3 -salt -in MyBook.tar -out MyBook.tar.encrypt

解密:

openssl des3 -d -salt -in MyBook.tar.encrypt -out MyBook.tar