1

我想在 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一样做呢?

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

附加信息:返回数据:

{"data":"3557793957617431633179755554443638483834686662707a652b7977454c655a654d344e316463513348324e2f2f6e6e4f54783961564e5a4f56426c6e69675a3850644c66734136446f736950516279366b375a5066302f7a424e654b47454c4153547132354c6746724e38432b4d7a3750514c4b3836796f7a54307764614666574e776373716d49766f517552347877766432337778584a796a49457878374e6c354a4f32434755583034722b4770324c79514658704d686e51586553574c6b6939303045754c6a7954494c454977493242796365496a75394b4a2b456347526136527244682b316168533067303651597a6b47713469717a75764d7856"}

加解密步骤

密码:AES(Rijndael 块大小 = 128)

键:fTG90HGFyeal3kGw

模式:CBC

IV:CBC 随机(必须附加到加密数据)

*base64 被用于使数据传输成为可能。

请求步骤:

1- 以键值格式收集所需数据
2- JSON 编码集合
3- 加密 JSON 字符串
4- 生成随机 IV 并附加到加密数据的头部
5- 使用 base64 编码加密数据
6- 在名为的键下发布第 5 项结果“数据”</p>

响应步骤:
1- 解码 JSON 字符串响应
2- 使用 base64 解码名为“data”的键的值
3- 解码数据的子字符串 IV
4- 解密数据
5- JSON 解码第 4 项的结果
6- 键值响应格式是

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

4

0 回答 0