繁体   English   中英

AES256在目标C中加密以使用PHP rijndael_256 ECB_MODE进行处理

[英]AES256 encrypt in objective C to mach with php rijndael_256 ECB_MODE

我正在尝试在目标C中的AES256中加密json,以发送到一台服务器,并使用以下行通过php对其进行解密:

MCRYPT_DECRYPT(MCRYPT_RIJNDAEL_256,$ key,base64_decode($ ha),MCRYPT_MODE_ECB,NULL));

经过几天的搜索和测试,我没有得到结果。 我正在使用的代码是这样的:

- (NSString *)AES256EncryptData:(NSData *) datos {

    //NSData * datos = [json dataUsingEncoding:NSUTF8StringEncoding];

    UIApplication *aplicacion = [UIApplication sharedApplication];
    AppDelegate *delegate = (AppDelegate *) aplicacion.delegate;

    char keyPtr[kCCKeySizeAES256+1];
    bzero(keyPtr, sizeof(keyPtr));
    [delegate.appKey getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding ];

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


    size_t numBytesEncrypted;
    CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt,
                                          kCCAlgorithmAES128,
                                          kCCOptionECBMode + kCCOptionPKCS7Padding,
                                          keyPtr,
                                          kCCKeySizeAES256,
                                          NULL,
                                          [datos bytes],
                                          [datos length],
                                          buffer,
                                          bufferSize,
                                          &numBytesEncrypted);


    if (cryptStatus == kCCSuccess) {
        NSData *returnData  = [[NSData alloc] initWithBytes:buffer length:numBytesEncrypted];
        return [returnData base64EncodedStringWithOptions:0];
    }

    free(buffer);
    return nil;
}

给定正在使用的加密算法,您可以永远尝试。 您当前正在使用MCRYPT_RIJNDAEL_256 ,这是具有256 块大小的Rijndael块密码。 您应该使用MCRYPT_RIJNDAEL_128 (也称为AES),然后执行PKCS#7取消填充

实际上,您还应该提供正确数量的密钥字节,对于AES,它应该为16、24或32个字节。 而且密钥字节显然必须与您在C#代码中使用的字节匹配。


如果您无法更改服务器代码,则应为IOS制作/编译mcrypt并为该特定API实现相同的功能。 至少它将兼容。 不幸的是,您似乎必须自己进行移植

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM