iOS5与iOS4.3上的加密

时间:2011-12-06 22:24:52

标签: 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。从cypherSize返回后,256始终为SecKeyEncrypt

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

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

1 个答案:

答案 0 :(得分:0)

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