问题标签 [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.
ios - 在 Swift 中使用 CommonCrypto 会产生不安全的扩展警告
我创建了一个简单的库来使用名为“ SweetHMAC ”的 Swift 的 HMAC 摘要。这个库非常简单,基本上是 Swift 中 CommonHMAC.h 的包装器。
我可以使用 SweetHMAC 正确构建和部署任何 iOS 项目,但是,由于一些安全问题,我的方法似乎不安全。例如,我在运行 iOS 测试后收到警告。
warning: linking against dylib not safe for use in application extensions
此代码不够安全,无法放入 iOS AppStore,应用程序可能会被拒绝。对于 OSX,没有问题。
我知道,Swift 有 HMAC 端口,但我的挑战是尝试让 Swift 安全地使用 CommonCrypto。
我已经使用这种方法实现了这个项目并且工作正常!
我的问题是,如何在 iOS 的 Swift 框架中安全地创建和使用 CommonCrypto 等模块?
ios - Commom Crypto 库是否支持以下密钥封装 RFC?
我尝试在我的应用程序中使用以下 RFC 算法: https ://www.rfc-editor.org/rfc/rfc5990
c# 和 java 的 Bouncy Castle 支持它,但我正在使用 iOS。据我所知,ios 中最好的密码学工具是commoncrypto
库。所以问题是这个库是否支持它?
我没有找到有关文档的任何有用信息,希望这里有人可以提供帮助。
python - 在 ios 中使用 ecc 进行加密
我正在尝试实施 ecc 技术进行加密。我浏览了以下帖子:
没有任何令人满意的解决方案。
现在,我正在考虑使用 python 库
https://github.com/yann2192/pyelliptic
但我不知道这是否是使用 ecc 进行加密的更好解决方案,因为我仍然需要找出一种在 objc 中使用 python 库的方法。
有人可以指出我正确的方向吗?
objective-c - 在 Objective C 中解密 AES
我是加密新手
问题:
我得到了一组加密字符串,我需要将它们解密以显示给移动客户端用户。对于android,它解密得很好,我正在使用以下方法“解密”。对于 iOS,我在将这个 java 方法转换为 Objective C 时遇到了很多麻烦。我尝试使用 NSData+CommonCrypto、RNCryptor。它们都会返回一些解密数据,但是当将解密数据转换为字符串时,它总是为零。
目标:
将java解密方法翻译成Objective C(使用密钥解密Objective C中的字符串)
任何建议、评论、意见、伪代码将不胜感激。谢谢
Android解密方法
php - 具有 PKCS7 填充编码数据的 AES 256 具有一半 ECB 和一半 CBC 块
我试图解码从服务器返回的 php 中的数据:我知道数据 AES 256 解码并有 PKCS7 填充但无法弄清楚它使用哪种块模式
这是我的php函数:
和编码数据示例
当我用 ECB (MCRYPT_MODE_ECB) 解码时,它只解码数据的开头,其余部分不可读
当使用 CBC (MCRYPT_MODE_CBC) 模式解码时,它开始无法读取
结果应该是(我在Mac上使用Objective-c中的CommonCryptor得到的):
有人知道出了什么问题或如何以正确的方式对其进行解码?
ios - SecKeyRawVerify 在 Mac 上验证但在 iOS 上失败并显示 -9809
我需要在 mac 上对一些数据进行数字签名,然后在 iOS 上进行验证。因此,我使用开放式 ssl 生成了 DER 格式的公钥的 RSA 密钥对和证书(尝试使用 SecKeyGeneratePair 生成,但是将公钥导入 iOS 并且 SecKeyRawVerify 仍然无法使用相同的结果),并签署了我的数据Mac 应用程序。然后,如果我在 iOS 验证上验证此数据失败并显示 -9809 错误代码,但如果在 mac 上执行相同的代码验证成功。
这是我的验证代码:
Mac 和 iOS 的数字签名验证有什么不同吗?我没有设法在 Apple 的文档中找到任何关于它的信息。
c - CryptoApi 到 CommonCrypto
我有在 Windows 平台中使用的加密代码,它使用 Crypto API 函数,需要将其转换为在 OS X 上使用 Common Crypto。
基本上原始代码是这样的,为简洁起见删除了错误检查:-
据我了解,这就是正在发生的事情:-
CryptAcquireContext - 获取一个对象来处理密码学
CryptCreateHash - 创建一个 MD5 散列对象
CryptHashData - 使用 MD5 散列输入数据
CryptDeriveKey, CryptDecrypt - 使用 RC4 解码 pData,使用密钥 m_hKey
pszInputData 的大小为 12 字节,MD5 散列对象的输出数组在两个平台上是相同的。
要使用 RC4 解码,我使用 Common Crypto 执行以下操作:-
使用在线 RC4 解码器匹配来自 Common Crypto 的输出(outBuffer 数组)测试,因此解码正确。
但是,pData 中 Windows 代码的最终输出与 Common Crypto 中解码的 RC4 不匹配。
此处的 Windows Crypto API 调用是否有一些我遗漏或不理解的步骤?为什么输出不同?
(请注意,我不是在寻找有关使用 RC4 的安全性或缺陷的评论)
swift - MD5 3DES 加密 Swift
我有一个应用程序必须发送首先由 MD5 加密然后由 3DES 加密的登录凭据。
我设法使用 CryptoSwift 通过 MD5 加密字符串。但是我在 Swift 上找不到任何可以通过 3DES 加密的内容。
我已经尝试过 CommonCrypto。据我所知,这是在 C 中,但可以通过桥接头导入到 Objective C 中。
我找到了一些文章和教程,它们告诉我如何通过桥接头(带有警告它不适用于框架)或 Model.map 将 CommonCrypto 导入 Swift。但是,两者都不起作用。我不确定这是否是最新版本的 iOS 或 Xcode 的限制。
有人可以建议替代方案吗?
谢谢
已编辑
您好,请查看我已采取的以下步骤
- 好的,所以我创建了一个名为 newEncrypt 的新项目。
- 我选择不使用 header 选项,因为说明说这仅限于非框架应用程序/
- 我在 newEncrypt 中创建了一个名为 CommonCrypto 的文件夹,里面有一个 module.map 文件。其中的内容是:module CommonCrypto [system] { header "/usr/include/CommonCrypto/CommonCrypto.h" export * }
- 将 ${SRCROOT}/CommonCrypto 添加到快速编译器搜索路径导入路径。调试和发布。
- 这是指令停止的地方。我假设我需要将 CommonCrypto 导入我的班级。此错误与“无法构建目标 C 模块‘CommonCrypto’。我还假设我应该在“/usr/include/CommonCrypto/CommonCrypto.h”或“/newEncrypt/CommonCrypto/CommonCrypto.h”中有 CommonCrypto 库文件(来自 CommonCryto 'include' 文件夹)?我试过这个,但是我只是得到同样的错误。
- 然后,我尝试使用#import 添加一个头文件,并将 -lfoo 添加到其他链接器标志调试和发布(尽管这可能不是正确的)ust,以防仍然需要。但我仍然得到相同的无法构建目标 c 错误。我确定我做错了什么,这很明显
ios - AES128 在 iOS 7 上截断解密文本,在 iOS 8 上没有问题
使用 ECB 模式(这是玩具加密)和 PKCS7 填充使用 AES128 加密的密文,以下代码块导致在 iOS 8 下恢复完整的明文。
在 iOS 7 下运行相同的代码块会生成正确的明文,但会被截断。为什么是这样?
我在下面添加了一个带有结果的独立测试工具。
测试线束:
iOS 8 结果:
iOS 7 结果:
和随后的结果:
更新:谜语:当我改变时
kCCOptionPKCS7Padding | kCCOptionECBMode ⇒ kCCOptionECBMode
iOS 7 中的结果符合预期。为什么是这样??我知道字节数是块对齐的,因为密文是用 PKCS7 填充填充的,所以这是有道理的,但为什么设置kCCOptionPKCS7Padding | kCCOptionECBMode
只导致 iOS 7 中的截断行为?
编辑:上面的测试密文是从这个网站生成的,并且在以下函数中独立使用 PHP 的 mcrypt 和手动 PKCS7 填充:
出去:
I9JIk5BskZMZKJFB/EAs+N2AYzkVR15DoBbUL7cBydBkWGlujVnzRHvBNvSVbcKh
更新:正确的 PKCS#7-padded 密文将是
I9JIk5BskZMZKJFB/EAs+N2AYzkVR15DoBbUL7cBydA6aE5a3JrRst9Gn3sb3heC
这就是为什么不是。
openssl - SQCipher:OpenSSL 到 CommonCrypto
刚刚将最新版本的 sqlcipher 库安装到我的 iOS 项目中。所以我从 OpenSSL 切换到 CommonCrypto(sqlcipher iOS 教程也发生了变化)。
现在,我收到“数据库错误:26”文件已加密或不是数据库“。似乎使用 CommonCrypto 的新加密引擎无法识别我之前使用 OpenSSL 加密并在 2 种情况下使用 SQLCipher 加密的数据库文件。当然, db键是一样的...
合乎逻辑吗?我应该保留 OpenSSL 吗?