0

で復号化するのに苦労していNSDataますNSData key。すべての復号化は正常に機能しますが、データをキーとして使用すると、ステータスが問題なく、そのデータのキーも正しいにもかかわらずNSString、メソッドは null を返します。NSDataこれが私の電話です

NSData *decrypted = [AES AES128DecryptWithKey:data key:mute];
NSLog(@"DECRYPTED >> %@", decrypted);

そして私の方法

+ (NSData*)AES128DecryptWithKey:(NSData*) data key:(NSData*)key {

    NSUInteger dataLength = [data length];
    NSLog(@"trying to decrypt >> %@ with key >> %@", data, key );

    size_t bufferSize           = dataLength + kCCBlockSizeAES128;
    void* buffer                = malloc(bufferSize);

    size_t numBytesDecrypted    = 0;
    CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt, kCCAlgorithmAES128, kCCOptionPKCS7Padding,
                                          [key bytes], kCCKeySizeAES128,
                                          NULL /* initialization vector (optional) */,
                                          [data bytes], dataLength, /* input */
                                          buffer, bufferSize, /* output */
                                          &numBytesDecrypted);
    NSLog(@"cryptstatus %d", cryptStatus);
    if (cryptStatus == kCCSuccess)
    {
        return [NSData dataWithBytesNoCopy:buffer length:numBytesDecrypted];
    }

    free(buffer); //free the buffer;
    return nil;
}

NSLog 出力:

trying to decrypt >> <152f052e 79436003 7a9c1a59 3b82f1c4>
with key >> <1b510e76 ac0000a1 027af26a e25ad24a>
cryptstatus 0
DECRYPTED >> <>

を調べましたが、 aes256RNEncryptorしかありませんが、128 が必要です。何かアイデアはありますか?

4

1 に答える 1

1

1 バイト ブロックにパディング バイトのみが含まれている可能性があります。その場合、期待される結果は 0 バイトになります。

これは暗号文には当てはまりません。この場合、暗号化中にパディングが適用されなかったため、データのパディングを解除しようとすると失敗します。

于 2013-01-28T13:38:36.977 に答える