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