- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
一位同事向我提供了他使用 GNUPG 加密的两个文本文件,AES128/AES256 没有加盐。
使用以下示例,https://stackoverflow.com/a/1400596/300972 ,我尝试在 iOS 应用程序中解密这两个文件,一个使用 AES256 示例,第二个通过将算法修改为 kCCAlgorithmAES128 并将 key 大小修改为 kCCKeySizeAES128。
将文件加载到 NSData 对象证明是成功的;我能够输出 NSData。但是,在解密时,它们总是以 kCCDecodeError (-4304) 失败。我认为可能是填充,所以我们尝试了不同的变体,原来是 kCCOptionPKCS7Padding,仍然是同样的错误。我尝试了填充 0,它提供了一个截断的 NSData 对象,我无法从中创建 NSString。 (UTF8 编码)。
有没有人能够在 iOS 环境中成功解密使用 GNUPG 加密的文件?你能给我们提供经验教训吗?
最佳答案
GnuPG 以 OpenPGP 文件格式 ( RFC-4880 ) 写入。这是一种相当复杂的格式,您甚至需要在开始解密数据之前对其进行解析。 GnuPG 还会在加密数据之前对其进行压缩。它使用“OpenPGP 的密码反馈 (CFB) 模式变体”。虽然 iOS 5 支持 CFB,但这与 RFC-4880 不太一样。例如,它们不使用普通的 IV,而是以一种新颖的方式进行同步,以提供与标准 CFB 不兼容的“快速检查”。然后是他们的 String-to-Key (S2K) 算法,与 PBKDF2 不同。
简而言之,CommonCryptor 是将其分解为交给 AES 的一系列步骤中的最后一个。你可以看看 libgcrypt,但它的 LGPL 许可证通常与 iOS 开发不兼容。您可能应该调查其他 OpenPGP 实现。我知道 JavaScript 中有一些(这很疯狂,但仍然可以工作而不会造成许可问题)。也许 Cryptlib (具有商业许可证)。
就个人而言,如果可以的话,我会选择其他一些加密器。 OpenSSL 虽然不是特别安全,但非常便携,并且像命令行应用程序一样易于使用。 RNCryptor可以在 iOS 上读写。
关于ios - iOS环境下的GNUPG解密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11958913/
这是一个基于 Python 的 GnuPg 用户友好的前端程序。 一直试图找到只导入一个公钥而不是所有公钥的命令。 这将导入文件中的所有键 gpg --import Some_pub_keys.txt
我需要生成一个 PGP 公钥/私钥。我以前从来没有这样做过。我已阅读文档,但给出的示例与我在计算机上看到的不匹配。 我用 gnupg 生成了 key 。 我运行命令列出公钥 gpg --list-ke
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 8年前关闭。 Improve thi
几年前,我改变了我的真实姓名。然后我自然想将名称更改为我的公共(public)和私有(private) GPG key 。我已经设法用我的新真实姓名为我的公钥生成子 key ,并且我已经设法用我以前的
我想删除用户 ID 或更新其评论,或者至少将另一个用户 ID 设为默认值。这是因为它包含的注释有一个愚蠢的排版错误。喜欢: gpg> list pub 4096R/xxxxxxxx created
我在使用 Python gnupg 模块验证签名时遇到问题。使用此模块,我可以加密和签署文件: gpg.encrypt_file(stream, encrypt_for, sign=sign_by,
我确实用 git 签署了提交,这是一个大问题,我无法从 CLI 以外的任何地方输入 gpg key 密码。例如,如果我将在 vscode 中提交,它将失败。所以我想出了一个想法,只需从 CLI 输入密
我是 PGP 新手,我正在尝试使用 GnuPG 通过 this tutorial 生成 PGP 私钥. 基本上,我在命令提示符下键入以下命令(在管理员模式下): gpg --gen-key 输入以下所
我有一个 Java 应用程序,它从远程计算机获取 GnuPG 加密文件,我需要解密和处理它们。然后我需要加密输出文件并将其发送到远程计算机。 首先我尝试了gnupg-for-java ( https:
尝试在 Python 中初始化 GnuPG 绑定(bind)时,我收到一条错误消息 TypeError: __init__() got an unexpected keyword argument '
如何通过 GPG(GnuPG) 中的子 key (多个子 key (e))加密 pub rsa4096/22E49AB870AD169A 2017-03-09 [SC] uid
我收到一个错误: gpg: no default secret key: No secret key gpg: [stdin]: clearsign failed: No secret key GPG
以下是我一直在尝试的代码。 import os import gnupg import pdb pdb.set_trace() gpg = gnupg.GPG(gnupghome='new') inp
我需要自动加密文件,例如myfile.xls 到 myfile.gpg。现在,当我尝试自动加密或使用 GNU 隐私助手对其进行加密时,加密的文件是 myfile.xls.gpg。当我删除该 .xls
我想对文件 /tmp/public.txt 进行对称加密. gpg --symmetric /tmp/public.txt 该命令将调用 enter passphrase窗口,我想自动发送密码。 我在
我正在尝试导入公钥、读取 csv 文件、加密该文件并将加密文件存储在文件夹/目录中。程序运行但在我运行脚本后似乎没有生成、创建或输出任何内容。任何建议。 import gnupg gpg = gnup
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 8年前关闭。 Improve this q
是否有一些 Gpg2 使用的库的依赖树或图,例如 libgpg-error 或 libassuan &c.? 或者另一种方法来确定在其中一个获得新版本后我需要重新编译哪些?例如。据我所知,libgpg
我正在使用 GNUPG 工具通过命令行执行加密/解密。在删除公钥时,我给出了以下命令: gpg2 --quite --yes --delete-key "Solveon DB" 命令执行后我得到了问题
我正在尝试对一些使用GPG(当前为1.4.10版)的自定义软件进行过时的验证,以执行对称加密/解密过程。我当前的加密命令如下所示: gpg --batch --no-tty --no-use-agen
我是一名优秀的程序员,十分优秀!