gpt4 book ai didi

swift - 使用公钥 (.cer) 加密 Json Payload

转载 作者:行者123 更新时间:2023-11-28 06:01:36 25 4
gpt4 key购买 nike

您好,我想使用作为 .cer 文件的公钥来加密 Json Payload。请建议如何做到这一点?

  let path = Bundle.main.path(forResource: "Keys123_1", ofType: "cer")
//get the data asociated to this file
let urlStt = URL(fileURLWithPath: path!)
if let base64String = try? Data(contentsOf: urlStt).base64EncodedString() {
print(base64String)

let data2 = Data.init(base64Encoded: base64String)

let keyDict:[NSObject:NSObject] = [
kSecAttrKeyType: kSecAttrKeyTypeRSA,
kSecAttrKeyClass: kSecAttrKeyClassPublic,
kSecAttrKeySizeInBits: NSNumber(value: 2048),
kSecReturnPersistentRef: true as NSObject
]
var error:Unmanaged<CFError>? = nil


guard let key = SecKeyCreateWithData(data2 as! CFData, keyDict as CFDictionary, &error) else {
print(error)
return
}

我收到这个错误:

Optional(Swift.Unmanaged<__ObjC.CFError>(_value: Error Domain=NSOSStatusErrorDomain Code=-50 "RSA public key creation from data failed" UserInfo={NSDescription=RSA public key creation from data failed}))

最佳答案

尝试此代码并使用公钥加密并通过在服务器端使用私钥解密来验证数据。我跟着这个link .

这可能适合你。

func getPublicKey() -> SecKey? {

let certificateData = try! Data(contentsOf: Bundle.main.url(forResource: "public", withExtension: "cer")!)

let certificate = SecCertificateCreateWithData(nil, certificateData as CFData)
var trust: SecTrust?

let policy = SecPolicyCreateBasicX509()
let status = SecTrustCreateWithCertificates(certificate!, policy, &trust)

if status == errSecSuccess {
let publicKey = SecTrustCopyPublicKey(trust!)!
return publicKey
}
return nil
}

关于swift - 使用公钥 (.cer) 加密 Json Payload,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49548487/

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