问题标签 [commoncrypto]

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.

0 投票
1 回答
562 浏览

sqlite - iOS中的CommonCrypto【sqlite文件加密】

我在我的 iOS 应用程序中使用 Core Data API。此外,当应用程序状态更改(背景/前景)时,我正在使用 commoncrypto 库(CCCrypt())加密/解密驻留在文档文件夹中的数据库文件(.sqlite 文件)。

我面临的问题是......当应用程序被用户从后台状态手动杀死时,数据库中的一些记录会丢失,这个问题是不一致的。

我只是将 sqlite 文件内容转换为 NSData 并用作 CCCrypt() 函数的输入来加密/解密,并且我没有在 crypt 操作中解码任何输入数据。

有人可以帮助我.....数据丢失的原因是什么?也只有当应用程序从后台状态被手动杀死时......对于加密和解密操作,CCCrypt函数返回状态为kCCSuccess......

在 CCCrypt 操作之前是否需要使用任何类型的解码输入数据(原始字节)?

0 投票
1 回答
2558 浏览

java - iOS 和 Java 与 CTR 模式的 AES 互操作性

我在 Java 中使用 CTR 模式加密了一条消息,并试图在 iOS 中解密该消息。但是,我的测试程序在解密时会打乱最后一个块

代码如下:

测试代码为:

消息应该是:Multiple block message

但是我得到的输出:

请注意,IV 是随机生成并附加到密文的,并且数据应该是 UTF8 编码的(但是在将编码设置为 NSUTF8StringEncoding 时我得到 NULL 输出)

0 投票
0 回答
234 浏览

ios - CommonCrypto 在 IPA 存档中的工作方式与在调试器中不同

我一直在把头发拉出来。我在我的 iOS 应用程序中使用 CommonCrypto 来加密数据,然后我将这些数据发送到解密它的 Windows 服务器。这在我的 iPhone 5 (iOS 6)、iPad 3 (iOS 6) 和模拟器 (Mac OS X 10.8.2) 上的 Xcode (最新版本) 开发环境中完美运行。

我用来加密的非常简单的代码是这样的:

同样,当我从 Xcode 调试时,这很有效。

但是当我构建 IPA(存档文件,即 Apple 为 App Store 审查的文件)并将加密数据发送到 Windows 服务器时,服务器报告“填充无效”。两者之间没有代码差异!

我怀疑 CommonCrypto 在这两种构建模式中有些不同,但我不知道那会是什么。我尝试从 Apple 的开源站点获取 CommonCrypto 库并构建它,目的是将其编译到我的代码中,但我未能成功构建它。

有没有其他人遇到过这个问题?我在这里缺少一些编译器选项吗?

* 编辑 *

我找到了导致问题的标志:如果我将“优化级别”设置为“最小/最快”、“最快”、“更快”或“最快” - 它会失败。但是如果我将它设置为“无”,它就可以工作。所以优化中的某些东西导致加密被破坏!

0 投票
2 回答
219 浏览

python - CCKeyDerivationPBKDF 线程安全吗?

CCKeyDerivationPBKDF用来在并发环境中生成和验证密码哈希,我想知道它是否是线程安全的。该函数的文档根本没有提到线程安全,所以我目前使用锁是为了安全起见,但如果我不需要,我宁愿不使用锁。

0 投票
1 回答
420 浏览

ios - 在 iOS 中将错误代码转换为文本

我有一个使用 CommonCryptor 加密和解密的包装器。有时解密过程会失败,在这种情况下,我会填写如下错误:

然后我记录这样的错误:

但是,这最终会生成如下字符串:

其中 -4304 可能是 CommonCryptor.h 中的任何错误代码(-4300 到-4305)。有没有一种将错误代码映射到其字符串值的好方法,或者我是否需要一个switch手动调整字符串的语句?如果我必须依赖 a switch,最佳做法是将其放在记录问题或生成错误的位置吗?

0 投票
3 回答
2228 浏览

ios - 可靠的方法来判断 aes256 解密中是否使用了错误的密钥

我有一些代码用于加密和解密 ios 应用程序中的一些字符串。该代码涉及使用 CCCrypt。是否有可靠的方法来测试所使用的密钥的有效性,而无需将密钥实际存储在任何地方?根据我的研究,似乎接近判断密钥是否有效的唯一方法是使用密钥长度和密钥哈希。任何人都可以指导我正确的方向吗?

0 投票
0 回答
739 浏览

ios - 如何生成 RSA 公钥/私钥对并使用它们在 iOS 上加密/解密 NSData?

这是针对我开始的一个开源项目,所以理想情况下我想使用我可以包含的其他开源作品。

对于好奇:我正在寻找使用 RSA 加密 AES 密钥。然后我将使用 AES 密钥来加密/解密用户的数据。

0 投票
0 回答
422 浏览

c# - 用于 ac# Web 服务的目标 c aes 128 加密

所以我试图弄清楚如何制作一个客观的 c 版本,因为它是已实现的 wcf 服务安全性的一部分。我的主要问题是 Idk 从哪里开始,因为一些文章/教程会在开头自动填充 0(不确定这是否是他们的 IV),如下所示:

(几个回复下来)

http://iphonedevsdk.com/forum/iphone-sdk-development/60926-aesencryption-in-objective-c-and-php.html

与不使用任何填充的此相比:

Objective-C 解密 AES 128 cbc 十六进制字符串

无论如何,这就是 wcf 使用 AES 128 加密的方式。非常感谢任何建议或推动正确方向的方法。谢谢!!!。

}

0 投票
0 回答
1328 浏览

ios - 使用 CCCrypt 解密返回缓冲区长度错误的 kCCSuccess

我有一个加密的数据流(AES 128、CBC、PKCS7),我试图在它到达时对其进行解密。有时我会收到一个长度为 334 的数据包,然后我会尝试对其进行解密。当我在 iPhone 5 上执行此操作时,它会返回kCCBufferTooSmall(对于非 mod 16 数据来说这是预期的)。但是,当我在 iPhone 3GS 上使用相同的东西时,它会返回kCCSuccess并给我一个部分解密的流(它给我的 333 的最后十个字节左右是伪造的 - 空终止符和随机数据)。

两台设备都是 iOS 6.1.2。该应用程序使用设置为最新 SDK (6.1) 的基本 SDK 构建,部署目标为 iOS 5.0。

我创建了以下测试用例,它也出现了这个问题:

为什么我kCCSuccess会因为不匹配块大小而失败?

0 投票
1 回答
698 浏览

ios - Objective-C 中 HMAC SHA1 实现的问题

我正在尝试使用 HMAC-SHA1 算法为休息请求创建 base64 签名。我专门使用 SinglePlatform API,步骤如下:

  1. 去掉请求的域部分,只留下路径和查询:/locations/haru-7?client=YOUR_CLIENT_ID
  2. 检索您的私钥,该私钥在 URL 的修改后的 Base64 中编码,并使用 HMAC-SHA1 算法对上述 URL 进行签名。您可能需要将签名密钥解码为其原始二进制格式。在许多密码库中,生成的签名将采用二进制格式。
  3. 使用修改后的 Base64 for URL 对生成的二进制签名进行编码,以将此签名转换为可以在 URL 中传递的内容。使用 sig 参数将此签名附加到 URL:

我目前的实现如下:

我最初收到的签名密钥是经过修改的 Base64,这就是我替换 -+_/ 字符的原因。此实现返回了正确的签名密钥,但不一致。

在将 Objective-C 转换为 C 时,我做错了什么吗?有没有更好的方法来处理这个?

我的应用程序正在使用 ARC。