Ios 错误的实现?
我的AES方法(下面的代码)仅适用于自加密数据。 我不知道哪里出了问题。你能给我推荐一些框架或更好的实现方案吗Ios 错误的实现?,ios,cocoa-touch,aes,Ios,Cocoa Touch,Aes,我的AES方法(下面的代码)仅适用于自加密数据。 我不知道哪里出了问题。你能给我推荐一些框架或更好的实现方案吗 - (NSData *)aesOperation:(CCOperation)op OnData:(NSData *)data key:(NSString*)inKey { NSData *outData = nil; int bufferSize = 6000000; NSLog(@"AES InData: %@",data); if (inKey ==
- (NSData *)aesOperation:(CCOperation)op OnData:(NSData *)data key:(NSString*)inKey {
NSData *outData = nil;
int bufferSize = 6000000;
NSLog(@"AES InData: %@",data);
if (inKey == NULL) {
NSLog(@"A klucz to chcesz wyczarować? Podaj klucz do zaszyfrowanego pliku");
return NULL;
}
const void *key = inKey ;
const void *dataIn = data.bytes;
size_t dataInLength = data.length;
// Data out parameters
size_t outMoved = 0;
unsigned char outBuffer[bufferSize];
memset(outBuffer, 0, bufferSize);
CCCryptorStatus status = -1;
status = CCCrypt(op, kCCAlgorithmAES128, kCCOptionECBMode, key, kCCKeySizeAES128, NULL,
dataIn, dataInLength, &outBuffer, bufferSize, &outMoved);
if(status == kCCSuccess) {
outData = [NSData dataWithBytes:outBuffer length:outMoved];
} else if(status == kCCBufferTooSmall) {
size_t newsSize = outMoved;
void *dynOutBuffer = malloc(newsSize);
memset(dynOutBuffer, 0, newsSize);
outMoved = 0;
status = CCCrypt(op,kCCAlgorithmAES128,kCCOptionECBMode,key,kCCKeySizeAES128,NULL,dataIn, dataInLength, &outBuffer, bufferSize, &outMoved);
if(status == kCCSuccess) {
outData = [NSData dataWithBytes:outBuffer length:outMoved];
}
}
return outData;
}
我找到了使用AES密码/解密的正确方法,每个人都能很好地使用
- (NSData *)initCipherData:(NSData *)data key:(NSString*)key{
return [self aesOperation:kCCEncrypt OnData:data key:key];
}
- (NSData *)initDecipherData:(NSData *)data key:(NSString*)key{
return [self aesOperation:kCCDecrypt OnData:data key:key];
}
- (NSData *)aesOperation:(CCOperation)op
OnData:(NSData *)data
key:(NSString*)inKey {
const char * key = [inKey UTF8String];
NSUInteger dataLength = [data length];
uint8_t unencryptedData[dataLength + kCCKeySizeAES128];
size_t unencryptedLength;
CCCrypt(op,
kCCAlgorithmAES128,
kCCOptionECBMode,
key,
kCCKeySizeAES128,
NULL,
[data bytes],
dataLength,
unencryptedData,
dataLength,
&unencryptedLength);
return [NSData dataWithBytes:unencryptedData length:unencryptedLength];
}
伟大的解决方案!我的钥匙长度有问题,可以解决。如果您正在寻找en并解码
iOS
和Android
,请看这篇文章,也许它对您有帮助