Я сделал шифрование и дешифрование с помощью AES128 с PKCS7padding, но не расшифровал его с помощью Android и .NET. В Android и .NET Pkcs5padding используется для шифрования и дешифрования. Мой код:Как использовать PKCS5padding с AES128 в iphone
- (NSData *)AES128EncryptWithKey:(NSString *)key
{
char keyPtr[kCCKeySizeAES128 + 1]; // room for terminator (unused)
bzero(keyPtr, sizeof(keyPtr)); // fill with zeroes (for padding)
[key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];
NSUInteger dataLength = [self length];
size_t bufferSize = dataLength + kCCBlockSizeAES128;
void *buffer = malloc(bufferSize);
size_t numBytesEncrypted = 0;
CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, kCCAlgorithmAES128,kCCOptionPKCS7Padding,
keyPtr, kCCKeySizeAES128,
NULL ,[self bytes], dataLength, buffer, bufferSize, &numBytesEncrypted);
if(cryptStatus == kCCSuccess)
{
return [NSData dataWithBytesNoCopy:buffer length:numBytesEncrypted];
}
free(buffer);
return nil;
}
- (NSData *)AES128DecryptWithKey:(NSString *)key
{
char keyPtr[kCCKeySizeAES128+1];
bzero(keyPtr, sizeof(keyPtr));
[key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];
NSUInteger dataLength = [self length];
size_t bufferSize = dataLength + kCCBlockSizeAES128;
void *buffer = malloc(bufferSize);
size_t numBytesDecrypted = 0;
CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt, kCCAlgorithmAES128, kCCOptionPKCS7Padding,
keyPtr, kCCKeySizeAES128,
NULL ,
[self bytes], dataLength,
buffer, bufferSize,
&numBytesDecrypted);
if(cryptStatus == kCCSuccess)
{
return [NSData dataWithBytesNoCopy:buffer length:numBytesDecrypted];
}
free(buffer);
return nil;
}
Сообщите, если у кого есть идеи. Дайте мне предложения.
"* но его не расшифровка с помощью Android и .NET *"> Можете ли вы уточнить? Вы получаете мусор? Является первым блочным мусором? Вы получаете ошибку заполнения? –
Да, я получал ошибку заполнения. но, слава богу, я решил эту проблему с внедрением kCCOptionECBMode. Проблема решена. спасибо за ответ – Anju
Хорошо. Пожалуйста, удалите этот вопрос или отправьте сообщение и примите свой ответ. –