问题标签 [apple-cryptokit]

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 回答
162 浏览

swift - SECP256K1 使用 SawTooth Swift 进行验证

我正在尝试使用 SawTooth SDK 来对 Secp256k1 密钥对进行签名/验证。当我尝试验证时,每个人似乎都期待结束:

我总是得到“验证失败......”知道我做错了什么吗?谢谢!

0 投票
1 回答
1302 浏览

swift - 使用 Apples CryptoKit 在 iOS 和 Kotlin/Java 之间进行跨平台 AES 加密

我想使用 Apples CryptoKit 将加密数据从运行 kotlin 应用程序的服务器发送到 iOS 应用程序。我在初始化AES.GCM.SealedBox和解密数据时遇到问题。一般来说,我不明白 Sealboxstag的用途。

所以首先是 Kotlin 方面:

IOS:

当然,双方都有相同的密钥和 iv/nonce。我遇到的错误消息是:

排队:

编辑 I:附加有效载荷信息:

服务器(科特林):

客户端(iOS):

0 投票
1 回答
468 浏览

ios - 如何存储加密数据

我正在尝试在 UserDefaults 中存储和检索我的加密文本数据,但检索它时出现问题。我使用 CryptoKit 来加密和解密数据。

错误消息是:“无法将 'Foundation.__NSSwiftData' (0x7fff89d1ee50) 类型的值转换为 'CryptoKit.ChaChaPoly.SealedBox' (0x7fff8085abc8)。”

有没有更好的方法将 SymmetricKey 存储在钥匙串中,而无需通过 UnsafeBytes 将其转换为字符串?我使用 SwiftKeychainWrapper。

0 投票
2 回答
227 浏览

ios - iOS - 如何在 iOS 12 中执行 sharedSecretFromKeyAgreement

最近,Apple 在 iOS 13 中引入了 CryptoKit,它有一个方法 sharedSecretFromKeyAgreement,它根据公钥和私钥之间的密钥协议生成共享密钥。这如何在 iOS 12 及更低版本中实现?

iOS 13

0 投票
0 回答
123 浏览

swift - 在数据库中存储 CryptoKit 公钥

我正在尝试将用户的 CryptoKit 公钥存储在我的 Parse 数据库中,但出现以下错误。

错误

代码

我尝试通过 (String(publicKey) 将 publicKey 转换为 String,但出现错误Initializer 'init(_:)' requires that 'Curve25519.KeyAgreement.PublicKey' conform to 'LosslessStringConvertible'

0 投票
1 回答
1265 浏览

swift - iOS CryptoKit AES-GCM 是否可以使用少于 12 个字节的随机数?

我正在尝试与使用 AES-GCM 和 4 字节随机数(UInt32)的现有设备进行交互。这是一个简单的增量计数器,每次操作发生时都会增加:

然后我尝试对其进行加密并检索如下值:

但是,AES.GCM.Nonce少于 12 字节的情况下不起作用,因此 4 字节的 nonce 会导致它抛出错误。我试过用一个备用的 0'ed 8 字节填充随机数:

但是设备拒绝了加密值,所以我认为这是不正确的。如果有人对实现这个 Swift 的最佳方式有任何建议,那就太棒了!谢谢你。

0 投票
1 回答
5291 浏览

ios - 解密 AES/GCM/PKCS5Padding iOS Swift

我正在尝试使用 AES 解密来解密 Base64Encoded String 消息。

加密消息(Base64Encoded 字符串): tNC6umcfBS/gelbo2VJF3i4LAhUKMp4oDHWN5KyYUTWeJIQKKYx6oAcQnGncIrPJNC1tUYMKV4kJQj3q9voIOrxc1n7FmRFvDXeRgWGNcGYO66dH3VjoEgF0oxZOpfzwSZKSv3Jm7Q=

密码(字符串) =“SOMEPASSWORDSTRING”

解密消息的步骤:

  1. 数据必须从 base 64 解码为普通字符串。

  2. 从输入中提取 IV 和加密文本

  3. 使用 IV 和相同的密码生成用于加密文本的密钥。密钥生成应遵循与以下相同的步骤。

  4. 生成 PBE 密钥(256 位)

  5. 使用生成的密钥和 IV,以与以下完全相同的方式初始化密码

  6. 此密钥初始化密码对象

  7. 生成密码以从加密文本中获取消息。

下面是用于解密输入消息的 JAVA 代码

我在 Swift 中使用下面的代码来生成与上面的 JAVA 代码相同的代码,但是我无法解密消息/密文。

用法:

任何线索将不胜感激,我想知道我在尝试快速转换时是否缺少一些配置或数据转换。

0 投票
1 回答
526 浏览

ios - 在 iOS 上使用 P256.Signing.PublicKey 时出现问题

我使用以下命令生成了一个公钥/私钥对:

这会产生以下结果(不用担心,私钥用于测试,不用于任何地方)

公钥为 65 个字节。

接下来我以 Base64 格式导出公钥

这会生成以下文件

但是,如果我对上述密钥进行 base64decode,结果是 88 个字节。

将这 88 个字节传递给P256.Signing.PublicKey(rawRepresentation: data)会导致以下错误:

CryptoKit.CryptoKitError.incorrectParameterSize

然而,这有效:

知道我需要做什么才能使其正常工作吗?

谢谢!

0 投票
1 回答
326 浏览

swift - Ubuntu 上的快速 CryptoKit

我正在尝试将一个小型 swift 程序“ main.swift ”编译为 Ubuntu 18.08 上的可执行文件。我使用Swift 包管理器来管理我的依赖项。在这个非常简单的情况下,我只有一个依赖项,即这个开源 CryptoKit。我有一个 swift 文件,它只是尝试导入 CryptoKit。

我的Package.swift文件如下所示:

当我尝试使用swift build构建可执行文件时,它会获取存储库,但随后会给出未找到产品的错误。快速构建的标准输出:

也许我错过了一些明显的东西?我仍然是 swift 世界的初学者。

0 投票
2 回答
114 浏览

swift - 测试 CryptoKit 的数据验证

我想验证一些下载的数据是否未经修改。我的期望是,如果我修改原始数据,签名会失败。虽然这在某些情况下是正确的(data2),但令人惊讶的是,在其他情况下却不起作用(data3)。使用 hashes/Digest返回相同的结果。

为简单起见CryptoKitCommonCrypto这在(我的) /SecKey...实施中也失败了。