Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/114.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios AES128加密无法正确使用密钥和iv,并提供与android在相同加密后产生的不同输出_Ios_Encryption_Key_Aes - Fatal编程技术网

Ios AES128加密无法正确使用密钥和iv,并提供与android在相同加密后产生的不同输出

Ios AES128加密无法正确使用密钥和iv,并提供与android在相同加密后产生的不同输出,ios,encryption,key,aes,Ios,Encryption,Key,Aes,我使用下面的代码用AES128 CBC加密来加密NSData 由于没有键和IV的填充,其输出与 android,而android的输出是正确的 您需要对密钥和IV进行Base64解码。我将密钥和IV作为字符串传递,但我仍需要对其进行解码,或者您打算说编码?首先,请使用联机工具进行检查。尝试解密消息并检查它是否与两种语言匹配。您可以在下面的行中使用Base64解码检查key和IV-[key getCString:keyPtr maxLength:sizeof(keyPtr)encoding:NSU

我使用下面的代码用AES128 CBC加密来加密NSData 由于没有键和IV的填充,其输出与 android,而android的输出是正确的


您需要对密钥和IV进行Base64解码。

我将密钥和IV作为字符串传递,但我仍需要对其进行解码,或者您打算说编码?首先,请使用联机工具进行检查。尝试解密消息并检查它是否与两种语言匹配。您可以在下面的行中使用Base64解码检查key和IV-[key getCString:keyPtr maxLength:sizeof(keyPtr)encoding:NSUTF8StringEncoding];你能把你要我添加的代码发给我吗?这会对我有更好的帮助,谢谢你的帮助。
- (NSData*)AES128Encrypt:(NSData *)dataToEncrypt iv:(NSString *)iv key:(NSString *)key {
    char keyPtr[kCCKeySizeAES128 + 1];
    bzero(keyPtr, sizeof(keyPtr));
    [key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];

    char ivPtr[kCCBlockSizeAES128 + 1];
    bzero(ivPtr, sizeof(ivPtr));
    if (iv) {
        [iv getCString:ivPtr maxLength:sizeof(ivPtr) encoding:NSUTF8StringEncoding];
    }

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

    size_t numBytesEncrypted = 0;
    CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt,
                                          kCCAlgorithmAES128,
                                          ccNoPadding,
                                          keyPtr,
                                          kCCBlockSizeAES128,
                                          ivPtr,
                                          [dataToEncrypt bytes],
                                          dataLength,
                                          buffer,
                                          bufferSize,
                                          &numBytesEncrypted);
    if (cryptStatus == kCCSuccess) {
        return [NSData dataWithBytesNoCopy:buffer length:numBytesEncrypted];
    }

    free(buffer);
    return nil;
}