问题标签 [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 投票
2 回答
1761 浏览

android - 等效于 ios 的 spongycastle 加密

这让我很难过——以下代码使用 SpongyCastle 的 Android 加密/解密——我正在尝试实现 iOS 的跨平台加密/解密。

以下代码(来自Android)使用提供的盐和密码(来自Android)使用提供的盐和密码进行处理,使用提供的盐和密码,密码由最终用户提供,以下代码改编自此kelhoer的回答。

我使用 AES128bit 的原因是 AES256 在 iOS 4+ 中不可用,它是在 iOS5+ 中引入的,并且不得不涉足使用openssl来生成派生密钥和初始化向量 (iv),据了解苹果拒绝与 openssl 库静态链接的应用程序。

由于该平台基于 iOS 4.2+,因此采用捆绑和静态链接 openssl库的做法似乎有些过头了,最好使用 CommonCryptor 库。

这是带有 Spongycastle 代码的 Android 版本:

但是在 iOS 4.2(使用 XCode)下,我无法弄清楚如何做等价的,

这是我在Objective C下尝试过的,目的是从Android端解密存储在mysql数据库中的数据,以进行测试:

已提供数据和用户密码,并从中获取返回码CCCrypt-4304指示不成功和错误解码。

我曾认为编码方案可能会抛弃 CommonCryptor 的解密路由,因此转换为NSASCIIStringEncoding.

Salt 与密码数据一起存储,长度为 32 字节。

请记住,我在这方面缺少什么,我在密码学方面很薄弱。

0 投票
2 回答
2607 浏览

php - 用 PHP 解密 AES CTR Little Endian

我在使用 PHP 解密使用 iOS 5.x 的 CommonCrypto 库加密的字符串时遇到问题。以下是参数:

这是我最好的尝试示例:

输出如下所示:

但它应该是“ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do... ”(包括尾随省略号。)

块大小为 16,并且前 16 个字符是正确的。这似乎表明 Mcrypt 和 CommonCrypto 之间的 AES CTR 反递增过程不匹配。到目前为止,我听到的每个人都建议这是 Big Endian 与 Little Endian 的问题。

我花了几天时间试图自己弄清楚所有这些字节顺序和反递增的东西,但这对我来说仍然是巫术。:-( 我只需要一些 PHP 代码来正确解密我的字符串。我不在乎算法的运行速度有多快。我愿意放弃 Mcrypt 以支持 PHP-native 解决方案或其他一些 PHP 扩展,只要这是一个常见的。但是,在 iOS 端进行更改不是一种选择。

请帮忙!

0 投票
2 回答
9628 浏览

ios - iOS CommonCrypto 参考

我正在尝试为 Apple 的 CommonCrypto 库找到某种参考,因为显然 Apple 没有任何明显的链接,而且 Google 提供的链接已经过时,如下所示:

https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man3/Common%20Crypto.3cc.html

对此有任何提示吗?有没有更好的库可以用来开发具有大量加密功能的应用程序?

谢谢。

0 投票
1 回答
1083 浏览

iphone - 从 NSString NOT NSData 解密 AES256 字符串

我正在尝试将AES256字符串从 iPhone 应用程序发送到服务器并返回。

使用以下内容,我可以成功地加密字符串并使用以下代码解密字符串:-

因此,这会抓取一个字符串,转换为NSData使用UTF8 编码,然后使用AES256. 然后它解密NSData并转换回字符串。

这可以正常工作并成功加密/解密字符串。

我遇到的问题是,我从服务器将数据作为解密字符串返回,因此需要传递一个字符串来AES256DecryptWithKey简单地解密它,但AES256DecryptWithKey 仅适用于NSData.

这会导致问题,因为我已经有一个加密的字符串,所以转换为数据然后加密AES包括 UTF8 编码,所以我实际上只是将UTF8字符串转换回解密的字符串。

我在这里错过了一些简单的东西还是在工作中有更黑暗的力量?

0 投票
1 回答
3563 浏览

ios - Obj-C:在 CommonCrypto 中,如果 CCCrypt() 不使用选项 kCCOptionPKCS7Padding,则结果缓冲区为空

如果我删除 kCCOptionPKCS7Padding,以下函数将返回正确的缓冲区大小和空密码数据 <>。我不能使用 kCCDecrypt 选项将空密文解密回纯文本。

如果 kCCOptionPKCS7Padding 不存在,则加密引擎不起作用。因此,它看起来像是强制性的,而不是选项。
我的问题:
谁让 CCCrypt() 在没有 PKCS7 填充的情况下工作?

0 投票
1 回答
3391 浏览

iphone - 来自 iOS 中 X.509 ASN.1 RSA 公钥的 SecKeyRef

我意识到有很多与我即将在 Stack Overflow 上提出的问题类似的问题,但没有一个有明确的答案可以真正满足我的需求,所以我们开始吧:

我的程序通过网络接收 ASN.1 编码的 RSA 公钥。我将数据存储在一个简单的 NSData 实例中。我希望使用该公钥对 16 个字节的数据进行编码并通过网络返回这些数据。根据我的研究,最好的方法似乎是使用 SecKeyRef。根据 Apple 提供的含糊不清的文档,这可以使用一些代码来完成。但是,他们的代码存在问题。每次我想使用公钥时,我都需要将它添加到钥匙串中并给它一个唯一标识符。问题是这个密钥只能使用一次。我正在寻找一种方法来获取不在钥匙串中并且由 ASN.1 编码的密钥创建的密钥的 SecKeyRef。

我还考虑了通过 base64 编码将其转换为通用 PEM 并将其包装在 '-----BEGIN PUBLIC KEY-----' 和 '-----END PUBLIC KEY----- 中的可能性' 然后将其加载到 SecKeyRef 中,但我也没有看到这样做的方法。

此外,我在密钥类型、密钥格式等方面没有太多选择。它来自第 3 方 java 服务器。耶。

我目前有这种加载密钥的替代方法(可能)不会将它们添加到密钥链中,但显然密钥(通过反复试验:D)不是 DER 格式,因此我不能像这样加载它。

PS:为什么苹果这么难?静态链接 OpenSSL 很容易,但随之而来的是各种出口法规和其他问题。

0 投票
2 回答
4160 浏览

ios - 128 位 AES 加密在 Objective-C 中返回 null

我正在尝试使用 AES 128 位加密对字符串进行加密,但转换后的加密数据在转换为字符串时始终返回 null。

这是我的加密功能。

加密后,加密数据长度报告为 16,但转换为 anNSString后返回 null。如果我用stringWithUTF16String它来转换它,它会像“軽ﶁែ뼐끨骖퐇”一样返回。这里有什么问题?

0 投票
0 回答
539 浏览

ios - AES128 加密在 iOS 6 和 iOS 7 中给出不同的结果

好吧,我正在开发一个从 Web 服务器发送和接收加密数据的应用程序。这里的问题是,我的加密结果不同。现在,比较在 iOS6 和 iOS 7 模拟器上运行的结果,我注意到十六进制也不同,我没有接触代码。

这是代码:

键和 iv 是静态的 16 字节字符数组。我在这里想念什么?提前致谢

0 投票
1 回答
925 浏览

ios - 使用 AES 解密 Base64 编码的字符串会导致错误状态 4301(缓冲区太小)

我想解密一个用 Objective-C 编码的AES加密字符串:Base64

这是我的代码:

运行代码时,结果是:Status = -4301, output = null

根据文档,状态 4301 =“缓冲区太小”

调试我的代码时,变量设置如下:

该错误仅在设置选项时发生kCCOptionPKCS7Padding,如果设置为0, status = 0, output = {}。

我在 SO 上检查了许多代码示例,但没有发现我的代码有任何问题。

您对我的代码可能有什么问题有任何想法吗?

顺便说一句:base64string我在这个示例代码中使用的代码是使用这个开源框架在 JavaScript 中创建的:http ://www.movable-type.co.uk/scripts/aes.html 。我不知道这些信息是否有帮助。

0 投票
0 回答
464 浏览

ios - CCCrypt 因 EXC_BAD_ACCESS 崩溃

我正在加密视频,有时我会遇到 CCCrypt 崩溃。这是我的加密方法,谁能解释它为什么会崩溃?(该过程在队列中的 NSOperation 中运行)。崩溃发生CCCryptorStatus cryptStatus = CCCrypt在线