gpt4 book ai didi

swift - SecKeyEncrypt 返回错误 -50 和 0 cipherSize

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

我正在将 PKI api 移植到 Swift 2.2 并发现以下错误。在 Objective-C 中一切正常。

要加密的数据对象大小为 32 字节。这是我正在使用的代码。

let buflen = 64
var cipherBuffer = UnsafeMutablePointer<UInt8>.alloc(buflen)
cipherBuffer[buflen] = 0 // zero terminate

var cipherLength: Int = 0

var statusCode: OSStatus?

let dataPointer = UnsafePointer<UInt8>(data.bytes)

statusCode = SecKeyEncrypt(publicKey, SecPadding.PKCS1, dataPointer, data.length, cipherBuffer, &cipherLength)

这会导致错误 -50 和 0 密码长度。

我正在对公钥和数据指针进行 hexdump 以确保它们正常,但找不到 SecKeyEncrypt 调用的问题

任何帮助将不胜感激

最佳答案

经过一番研究,我找到了解决问题的办法

我正在使用 alloc 和零终止数组创建 cipherBuffer,如下所示:

let buflen = 64
var cipherBuffer = UnsafeMutablePointer<UInt8>.alloc(buflen)
cipherBuffer[buflen] = 0 // zero terminate

我尝试了以下方法,效果很好。

let blockSize = SecKeyGetBlockSize(publicKey) //64
var cipherBuffer = [UInt8](count: Int(blockSize), repeatedValue: 0)

鉴于这两种方法都使用 hexDump 报告了 64 字节的 block 和 0x00,我做了一个快速测试并检查了以前的代码,发现删除带有“cipherBuffer[buflen] = 0”的行可以解决问题。

看来和数组的零终止有关,或者我可能做了一些奇怪的事情。

关于swift - SecKeyEncrypt 返回错误 -50 和 0 cipherSize,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38709652/

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