gpt4 book ai didi

swift - 获取 SecKey 的字符串表示形式

转载 作者:可可西里 更新时间:2023-11-01 02:00:21 26 4
gpt4 key购买 nike

编辑 添加了所需请求的屏幕截图。

我正在尝试使用 Swift 4 制作一个 MacOs 应用程序。此应用程序与需要 RSA 加密的 API 进行通信。

Google 没有给出可以解释如何做到这一点的结果。 Apple 关于此主题的文档非常广泛 ( https://developer.apple.com/library/content/documentation/Security/Conceptual/CertKeyTrustProgGuide/KeyRead.html#//apple_ref/doc/uid/TP40001358-CH222-SW2 ),但仍然不是我需要的。

函数 SecKeyCopyExternalRepresentation 给出了一个数据对象不能转换为字符串。文档说这是 PCKS #1 响应,但我无法解决。

我已经尝试了很多东西,包括下面的,但我无法让它工作。

func externalRepresentation(_ key: SecKey) -> String? {
var error: Unmanaged<CFError>?

guard let data = SecKeyCopyExternalRepresentation(key, &error) as Data? else {
return nil
}

return data.base64EncodedString()
}

请求需要如下: Request

这在 Swift 中甚至可能吗?

最佳答案

将二进制 blob(如证书或 RSA key 编码为字符串)的常规方法是使用 base64编码。您可以使用函数 base64EncodedString(options:) 轻松地将 Data 转换为 base64。 .即

let myString = myData.base64EncodedString()

很难说这是否正是您对该应用程序所需要的,因为您的问题没有提供太多上下文。

查看您的屏幕截图以及 base64 编码的字符串,您需要一个页眉和页脚。数据结构中的大多数明显随机字母都是 base64 字符串(JSON 转换已使用 \n 对换行符进行编码,其他内容已将反斜杠加倍)。因此,您的最后一步是在字符串前加上 -----BEGIN PUBLIC KEY----- 和一个新行,然后追加一个新行和 -----END公钥-----

还有一件事:您可以使用 Data.init?((base64Encoded base64String:,options:) 很容易地从 base64 字符串中取回原始数据。 .即

guard let myDataCopy = Data(base64Encoded: myString)
else { fatalError("the string was not really base64") }

关于swift - 获取 SecKey 的字符串表示形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46890700/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com