在iOS5和iOS4.3上加密



下面的代码导致了iOS4.3上的status = 0 SDK:

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 = 245cypherSizeSecKeyEncrypt返回后始终是256

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

这种差异的原因是什么?

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

最新更新