encryption - 如何以编程方式解密 PGP 自解密存档?

标签 encryption cryptography exe gnupg pgp

我每天都会收到我有密码的 SDA 文件。解密是通过运行该文件并在弹出的程序窗口中手动输入密码来完成的。我想避免这个手动步骤,并将其转变为自动化流程的一个步骤。

其工作方式如下: 一旦我的守护进程检测到新文件已到达我的收件箱,我的程序就会下载、解密并保存它。我知道如何用代码完成所有这些工作,除了解密部分。

我不想运行 .exe 文件并手动输入密码,而是想读取它的内容,并使用密码解密其中包含的数据,如下所示:

4d5a 9000 0300 0000 0400 0000 ffff 0000
b800 0000 0000 0000 4000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 f000 0000
0e1f ba0e 00b4 09cd 21b8 014c cd21 5468
...etc

我当前使用的语言是 PHP,但是查看任何语言的实现都会有所帮助。

有什么想法吗?

最佳答案

PGP 自解密文件只是此文件内的 EXE stub + PGP 消息。您应该解析 EXE header ,找到该数据的存储位置,提取它,然后使用 GnuPG 或任何其他 PGP 库进行解密。

关于encryption - 如何以编程方式解密 PGP 自解密存档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13960544/

相关文章:

powershell - 如何在 PowerShell 中运行带有空格和引号的参数的 EXE 文件

java - 从 Java 代码构建 exe 的最佳免费工具?

PHP mcrypt 到 openssl BF-CBC : how to get the same encrypted value

c - 从 Openssl 对 AES 和 RC2 进行基准测试——为什么 AES 更快?

c++ - 英特尔® TinyCrypt : how to use AES-128/CTR

java - 双重加密/解密失败但单一加密/解密失败 - AES 256 位

c# - Exe 文件错误 HResult 0x8002000B,索引无效

php - 如何解密HTTPS(ECDHE)数据?

encryption - 使用 RSA 进行哈希

go - 卡在 Go 中的 cryptopals 挑战 4