将 uint8_t 转换为 NSData

Joh*_*n M 2 bytebuffer rsa nsdata ios

我已经根据 Apple Developer 网站上提供的示例在 iOS 应用程序中实现了公钥私钥 RSA 加密。

如果我加密并返回uint8_t cipherBuffer,然后从 中解密,它会完美地工作uint8_t cipherBuffer。但是我需要将加密数据存储到.xcdata模型中NSData

我遇到的问题是在解密时可靠地将其转换uint8_t cipherBufferNSData和/或将其转换NSData回。uint8_t解密的数据似乎被截断。

这就是我将uint8_t加密缓冲区转换为NSData

return [NSData dataWithBytesNoCopy:cipherBuffer length:BUFFER_SIZE];
Run Code Online (Sandbox Code Playgroud)

这就是我在解密时将加密数据转换NSData回缓冲区的方法:uint8_t

uint8_t *cipherBuffer = (uint8_t*)[cipherText bytes];
Run Code Online (Sandbox Code Playgroud)

Joh*_*n M 5

谢谢 jgh 和乔迪;

我将加密方法更改为“malloc”缓冲区,并尝试了几种将字节写入的方法NSData,结果是:

return [NSData dataWithBytes:(const void *)cipherBuffer length:CIPHER_BUFFER_SIZE];
Run Code Online (Sandbox Code Playgroud)

最终解决问题的是改变我uint8_t在解密方法中创建的方式:

const uint8_t *cipherBuffer = (const uint8_t*)[data bytes];
Run Code Online (Sandbox Code Playgroud)