CCCrypt()
iOS5で非常にうまく機能する復号化/暗号化方法を使用しました。現在、私は iOS6 SDK を使用しており、コードを変更したことはありませんが、何かが壊れているようです。キーを使用して文字列を暗号化して復号化することはできますが、別のキーを使用して同じ文字列を復号化すると、復号化が失敗した場合でも、NSData が満たされないため、元に戻ることはありませんCCCryptStatus
。iOS5 では、エラー メッセージ -4303 が表示されましたが、これを処理できました。今何が間違っている可能性がありますか?CCCrypt()
0(kCCSuccess)
私のコード:
char keyPtr[kCCKeySizeAES256+1];
bzero(keyPtr, sizeof(keyPtr)); // fill with zeroes (for padding)
// fetch key data
[key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];
if (encryptOrDecrypt == kCCDecrypt)
{
data = [GTMBase64 decodeData:data];
}
NSUInteger dataLength = [data length];
size_t bufferSize = dataLength + kCCBlockSizeAES128;
void *buffer = malloc(bufferSize);
size_t numBytesDecrypted = 0;
CCCryptorStatus cryptStatus = CCCrypt(encryptOrDecrypt,
kCCAlgorithmAES128,
kCCOptionPKCS7Padding,
keyPtr,
kCCKeySizeAES256,
NULL ,
[data bytes], dataLength,
buffer, bufferSize,
&numBytesDecrypted);
if (cryptStatus != kCCSuccess){
// do something, but cryptStatus is always 0!
}
編集:iPad Simulator 5でテストしました。別のキーで復号化すると、ステータスは-4303になります。ios6 でのみステータスが 0 に戻ります。