参考的安卓端解密的代码写的,但安卓端解密没问题,我写的一直解不出来。
安卓解密代码如下:
java
byte[] keyBy = key.getBytes("utf-8");
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS7Padding");
SecretKeySpec keyspec = new SecretKeySpec(keyBy, "AES");
cipher.init(Cipher.DECRYPT_MODE, keyspec);
return cipher.doFinal(toDecrypt);
我写的 Objective-C 代码:
```ObjC
char keyPtr[kCCKeySizeAES128+1];
bzero(keyPtr, sizeof(keyPtr));
[key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];
NSUInteger dataLength = [data length];
size_t bufferSize = dataLength + kCCBlockSizeAES128;
void *buffer = malloc(bufferSize);
size_t numBytesDecrypted = 0;
CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt, kCCAlgorithmAES128, kCCOptionPKCS7Padding | kCCOptionECBMode, keyPtr, kCCKeySizeAES128, NULL, [data bytes], dataLength, buffer, bufferSize, &numBytesDecrypted);
if (cryptStatus == kCCSuccess) {
return [NSData dataWithBytesNoCopy:buffer length:numBytesDecrypted freeWhenDone:YES];
}
free(buffer);
return nil;
```
PKCS7Padding 、 ECB 、密钥都一致,但解出来的东西不一样,我把 128 、 192 、 256 这三种密钥长度也都试了一遍也不行,求大神指点一下还可能是什么地方的问题?