1

kCCOptionPKCS7Padding を削除すると、次の関数は空の暗号データ​​ <> で正しいバッファ サイズを返します。kCCDecrypt オプションを使用して空の暗号文を平文に復号化できません。

    char keyPtr[kCCKeySizeAES128 + 1];
    memset(keyPtr, 0, sizeof(keyPtr));
    [key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];

    char ivPtr[kCCBlockSizeAES128 + 1];
    memset(ivPtr, 0, sizeof(ivPtr));

    [iv getCString:ivPtr
         maxLength:sizeof(ivPtr)
          encoding:NSUTF8StringEncoding];

    NSUInteger dataLength = [self length];
    size_t bufferSize = dataLength + kCCBlockSizeAES128;
    void *buffer = malloc(bufferSize);

    size_t numBytesCrypted = 0;
    CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt,
                                          kCCAlgorithmAES128,
                                          kCCOptionECBMode|kCCOptionPKCS7Padding,
                                          keyPtr,
                                          kCCBlockSizeAES128,
                                          ivPtr,
                                          [self bytes],
                                          dataLength,
                                          buffer,
                                          bufferSize,
                                          &numBytesCrypted);
   return [NSData dataWithBytesNoCopy:buffer length:numBytesCrypted];

kCCOptionPKCS7Padding がない場合、暗号化エンジンは機能しません。したがって、オプションではなく必須のように見えます。
私の質問:
CCCrypt() を PKCS7 パディングなしで動作させるのは誰ですか?

4

1 に答える 1