iphone - iOS 5 与 iOS 4.3 上的加密

标签 iphone ios encryption ios5

以下代码在 iOS4.3 上的 iOS4.3 SDK 上导致 status = 0:

size_t mySize, cypherSize;
mySize = (secKeyGetBlockSize() - 11);
// Code that reads in mySize bytes into buffer and
// sets cipherSize to secKeyGetBlockSize().
// [...]
status = SecKeyEncrypt(myPublicKey,
                       kSecPaddingPKCS1,
                       myBuffer,
                       mySize,
                       myBuffer,
                       &cipherSize);

事实证明,setKeyGetBlockSize()256,因此 mySize = 245。从 SecKeyEncrypt 返回后,cypherSize 始终为 256

在 iOS5 上运行的 iOS5 SDK,上面相同的代码导致 status = -50!经过一些实验后,我发现 mySize = 244(比以前低了一个!)再次起作用。我在 iOS5.0 上检查了 SecKeyEncrypt 的文档,它没有改变 - 因此,大小也不应该改变。

造成这种差异的原因是什么?

最佳答案

我认为您的问题是 cipherSize。您未初始化该变量,但在 SecKeyEncrypt() 的输入中它应该包含您的 myBuffer 缓冲区的大小(在输出时它包含实际写入的字节数到那个缓冲区)。

关于iphone - iOS 5 与 iOS 4.3 上的加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8407764/

相关文章:

java - 加密 - 解密时数据错误

iphone - 我得到了一个 EXC_BAD_ACCESS,我似乎无法找出原因

iphone - 加载不同的 subview

ios - Google Places API for IOS 未设置本地化语言

ios - Firestore在文档中的数组中搜索字符串

algorithm - 数字签名有多安全?

iphone - 评估用户位置 GPS 传感器数据准确性的最佳方法是什么?

ios - 替代覆盖 didChangeValueForKey : on NSManagedObject

ios - presentCodeRedemptionSheet 未显示兑换优惠按钮

sql-server - 无论如何解密加密的sql server存储过程?