问题标签 [pgp-desktop]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 在 Linux 上运行的 Java 应用程序中使用 PGP 兼容文件加密的推荐解决方案?
我需要替换现有的应用程序,除其他外,该应用程序需要以与 PGP Desktop 兼容的方式加密/解密/签署消息和文件。
新应用程序是用 Java (JDK 1.6) 编写的,将在 Linux 上运行。
在调查了可用的内容后,我看到BouncyCastle 支持OpenPGP
. 否则,JCE 不提供与 PGP 兼容的安装。
从 PGP 调用官方命令行客户端作为外部进程是我想尽可能避免的事情(而且它要花费数千美元)。
还有其他选择吗,或者就是这样?
谢谢。
pgp - 我可以使用 PGP 桌面加密文件并使用 OpenPG 或 GPG4Win 解密它吗?反之亦然
我想知道是否可以使用 PGP Desktop 加密和使用 GPG4Win 或 Vice Versa 解密,或者我是否必须对加密和解密这两个过程使用相同的客户端?
ios - iOS 上的 PGP 解密
我正在尝试在 iPad 上实现 PGP 文件的解密。我设置了一些测试 .txt 文件,然后通过 PGP 桌面对其进行加密。
我已经导入了用于加密文档的证书的私钥,使用 SecPKCS12Import,然后从生成的 SecIdentityRef 中使用 SecIdentityCopyPrivateKey()。
如果我使用证书的公钥和私钥在 Objective C 中测试加密和解密一个简单的字符串,那效果很好。
现在我正在试用实际的 PGP 解密,我有点难过......从 .pgp 文件中读取文本,我得到:
我知道我需要从文件中的数据中获取 PGP 用来加密文件的随机一次性密钥。我知道要做到这一点,我需要将 SecKeyDecrypt 与私钥一起使用,以获取一次性 AES 密钥。一旦我有了那个密钥,我就可以解密其余的数据。
我遇到的问题是将哪一部分数据输入 SecKeyDecrypt。PGP 文件设置如何 - 前 128 个字符是 AES 密钥吗?除非我的理解是错误的,否则我需要将其与数据分开。
如果我通过 SecKeyDecrypt 函数将前 128 个字符作为 void 运行:(在剥离 BEGIN PGP MESSAGE 行之后)
我明白了:
MRªh6∞bJ˘e£t*˝ã=ŒA¢Òt'ŸY±éÿAÃîâG Îfi≠$b≈tâç`yxk=uHªqu-,–dïn^™È\›5±tb.‡€Kñ⁄≤sΩw–ïʃkafS ˘À*Æô竡rAyv)fi]wOrµKz^ªq“à∑öΓı*r<+l˝Äo∑›g≠¶/÷eÔ&€PÒRåêM¶Ñ|Q$á6În^võ¬∏·h(ƒß• R≤(fò(*•Aa
我不知道这是什么编码,但试图将它从 outputBuf 转换为字符串永远不会 100% 有效。无论我通过什么编码,它似乎都会被修改。如果我先将它传递给 NSData,我可以取回原始字符串。
然后我尝试将该密钥传递给 AES256DecryptWithKey 类,在前 128 个字符之后为其提供 PGP 文件中的剩余数据。
问题:
结果数据“纯”打印为<>,即为空。我的问题是我什至不认为我知道如何从 PGP 文件中获取密钥。
谁能向我解释 PGP 文件设置?如果它实际上与数据完全分开,那么“关键”是什么部分?它总是相同的长度/相同的位置吗?如果它不是分开的,那么我根本不知道我怎么能抓住它。我认为其余的工作会很好。我没有收到任何错误或崩溃,这不是我为 AES 解密传递的正确密钥和/或数据,我怀疑可能是字符串编码错误的组合,并且没有为 AES 密钥/正确组合获取正确的数量.
笔记 -
我创建了 3 个不同的文本文件并通过 PGP 进程运行它们。检查它们,它们都以相同的 24 个字符 (qANQR1DBwEwDraQm2Kxa5GkB) 开头。即使我通过解密传递了这 24 个,它也不起作用,而且我的印象是每个文档使用的 AES 密钥 PGP 都不同。我弄错了吗?
感谢您朝着正确方向迈出的任何一步!
编辑添加:
只是部分注意到我的错误 - 128 的 AES 需要 16 位,所以无论哪种方式,我都使用 128 个字符来取错数量,愚蠢的错误,认为我一直在看这个太久......换掉它并没有工作。我所做的任何解密都会导致 '⁄Ĉ¢ï¡0M¶È2Cˆ¿©gUú¨6iîΩ`&<%Jœv£¯nRbΔ:(–%' 类型结果,这对我来说意味着我做错了什么或需要对编码做进一步的事情。