【问题标题】:How to decrypt AES 128 with swift using CryptoSwift framework如何使用 CryptoSwift 框架快速解密 AES 128
【发布时间】:2015-06-30 16:52:40
【问题描述】:

我正在开发一个快速项目,该项目正在扫描 QR 码并获取需要解密的加密 AES-128 数据。

我正在使用一个名为 CryptoSwift 的框架。

我有保存加密数据的二维码的密钥和数据。

var key     = "B7zqj4TAXnPevYZAR4T26969"
var qrData  = "zWDzClfre4aOjTumzGsnpqh4Sje7sFsbKceA3/OSH3nKRwc7/6fYUajBr/bLh9BB"

编辑:对不起,我忘了提到加密是:

  1. 密码:AES-128
  2. 操作模式:CBC
  3. 填充:PKCS7
  4. 密钥源自:简单解码

我想知道我应该采取什么方法来解密这个 QR 数据。

任何帮助都会很好。

【问题讨论】:

  • 不要使用 CryptoSwift,所有原语都是本土实现,可能有错误/弱点/后门。使用经过严格审查的使用 Apple 的 Common Crypto 的库。此外,CryptoSwift 缺少密钥加密原语,例如 PBKDF2,用于从密码中获取密钥,用于帮助将密码转换为安全密钥。还缺少获取随机数据以用作 iv 以及其他关键用途。 Apple 的 iOS CoreCrypto 内核模块已通过 FIPS-140-2 认证。
  • 查看SO answer 获取示例 Swift AES 代码。
  • 当您说:“密码:AES-128”时,这是模棱两可的。大概您的意思是 128 位密钥大小。提供的密钥是 24 字节,这将是 192 位的密钥大小。 CBC 模式需要 iv 但未指定。许多实现将默认使用 0x00 字节,但这不能保证,Common Crypto 可以。但最好始终提供 iv。当你说:“密钥派生自:简单解码”时,你期望什么?当前的最佳实践解决方案是 PBKDF2。
  • 嗨@zaph,非常好的提示,谢谢你,但我想知道我是否使用Apple的Common Crypto,是否易于导入到swift项目?目前,我正在检查 SO 答案,当我尝试检查这些代码时,我遇到了很多错误。
  • 您需要一个桥接头并将#import <CommonCrypto/CommonCrypto.h> 添加到其中。如果您没有桥接头让系统添加一个用于输出,请参见Adding a Bridging Header,您可以在第3步之后删除.m文件。您还需要将Security.framework添加到项目中。如果你使用的是 Swift,那是什么版本。

标签: ios swift spring encryption cryptoswift


【解决方案1】:

请参阅SO answer 获取示例 Swift AES 代码。

当您说:“密码:AES-128”时,这是模棱两可的。大概您的意思是 128 位密钥大小。提供的密钥是 24 字节,这将是 192 位的密钥大小。

CBC 模式需要 iv 但未指定。许多实现将默认使用 0x00 字节,但这不能保证,Common Crypto 可以。但最好提供静脉注射。

当您说“密钥派生自:简单解码”时,您期望什么?目前最佳实践解决方案是 PBKDF2。

您需要一个桥接头并在其中添加#import。如果您没有桥接头让系统添加一个用于输出,请参见Adding a Bridging Header,您可以在第 3 步之后删除 .m 文件。

您还需要将 Security.framework 添加到项目中。如果你使用的是 Swift,那是什么版本。

【讨论】:

  • 嗨@zaph,在你的帮助下,我已经成功地将“#import ”添加到我的快速项目中,并使用SO answer 解密了一些数据。但是我想问一下如何将其转换为字符串以便我可以看到它已成功解密?
  • 给定的数据也是有效的 UTF-8 字符串:var dataString = NSString(data:data, encoding:NSUTF8StringEncoding) as! String.
  • var dataString = NSString(data:data, encoding:NSUTF8StringEncoding) as!细绳。所以我应该使用decryptedData而不是数据吗?因为该数据包含我要转换为字符串的信息。
猜你喜欢
  • 1970-01-01
  • 2018-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多