我想在 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- 键值响应格式是
我按照解密步骤解密,我仍然无法解密数据。