我想在IOS中使用AES / CBC / PKCS5Padding解密和加密数据,在android中我可以使用Cipher类来做,但在IOS中没有那些类使用它,对吧?

目前我使用它来做它,但它似乎不正确 .

- (NSData *) DecryptAES: (NSString *) key{
char  keyPtr[kCCKeySizeAES128];
bzero( keyPtr, sizeof(keyPtr) );

[key getCString: keyPtr maxLength: sizeof(keyPtr) encoding: NSUTF8StringEncoding];

size_t numBytesEncrypted = 0;

NSUInteger dataLength = [self length];

size_t bufferSize = dataLength + kCCBlockSizeAES128;
void *buffer_decrypt = malloc(bufferSize);
const unsigned char iv[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

CCCryptorStatus result = CCCrypt( kCCDecrypt , kCCAlgorithmAES128, kCCOptionPKCS7Padding,
                                 keyPtr, kCCKeySizeAES128,
                                 iv,
                                 [self bytes], [self length],
                                 buffer_decrypt, bufferSize,
                                 &numBytesEncrypted );

if( result == kCCSuccess )
    return [NSData dataWithBytesNoCopy:buffer_decrypt length:numBytesEncrypted];

return nil;}

我怎么想像java一样做呢?

我已经尝试了很多差异化的方法来做到这一点,但现在仍然有效,希望你们能帮助我,谢谢 .

附加信息:返回数据:

{ “数据”: “3557793957617431633179755554443638483834686662707a652b7977454c655a654d344e316463513348324e2f2f6e6e4f54783961564e5a4f56426c6e69675a3850644c66734136446f736950516279366b375a5066302f7a424e654b47454c4153547132354c6746724e38432b4d7a3750514c4b3836796f7a54307764614666574e776373716d49766f517552347877766432337778584a796a49457878374e6c354a4f32434755583034722b4770324c79514658704d686e51586553574c6b6939303045754c6a7954494c454977493242796365496a75394b4a2b456347526136527244682b316168533067303651597a6b47713469717a75764d7856”}

加密和解密步骤

密码:AES(Rijndael块大小= 128)密钥:fTG90HGFyeal3kGw模式:CBC IV:CBC随机(必须附加到加密数据)*正在使用base64以使数据传输成为可能 . 请求步骤:1-以键值格式收集所需数据2- JSON编码集合3-加密JSON字符串4-生成随机IV并附加到加密数据的头部5-用base64编码加密数据6-发布第5项结果一个名为“data”的键响应步骤:1-解码JSON字符串响应2-用base64解码名为“data”的键的值3-解码数据中的子串IV 4-解密数据5- JSON解码第4项的结果6 - 键值格式的响应是

我按照解密步骤解密,我仍然无法解密数据 .