2010-05-15 72 views
3

我有这个加密/解密执行和执行没有错误,但我无法解密的数据和im不知道数据是否加密,请帮助。iphone加密不起作用

- (NSData *)AES256EncryptWithKey:(NSString *)key { 

char keyPtr[kCCKeySizeAES256+1]; 
bzero(keyPtr, sizeof(keyPtr)); 


[key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding]; 


NSUInteger dataLength = [strData length]; 
data = [[NSData alloc] init]; 
data = [strData dataUsingEncoding:NSUTF8StringEncoding]; 


size_t bufferSize = dataLength + kCCBlockSizeAES128; 
void *pribuffer = malloc(bufferSize); 

size_t numBytesEncrypted = 0; 
CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, kCCAlgorithmAES128, kCCOptionPKCS7Padding, 
             keyPtr, kCCKeySizeAES256, 
             NULL /* initialization vector (optional) */, 
             [data bytes], dataLength, /* input */ 
             [data bytes], bufferSize, /* output */ 
             &numBytesEncrypted); 
if (cryptStatus == kCCSuccess) { 
    return [NSData dataWithBytesNoCopy:data length:numBytesEncrypted]; 
}} 

解密是:

-(NSData *)AES256DecryptWithKey:(NSString *)key andForData:(NSData *)objDataObject { 
char keyPtr[kCCKeySizeAES256+1]; 
bzero(keyPtr, sizeof(keyPtr)); 
[key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding]; 

NSUInteger dataLength = [objDataObject length]; 
size_t bufferSize = dataLength + kCCBlockSizeAES128; 
void *buffer = malloc(bufferSize); 

size_t numBytesDecrypted = 0; 
CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt, kCCAlgorithmAES128, kCCOptionPKCS7Padding, 
             keyPtr, kCCKeySizeAES256, 
             NULL, 
             [objDataObject bytes], dataLength, 
             [objDataObject bytes], bufferSize, 
             &numBytesDecrypted); 

if (cryptStatus == kCCSuccess) { 
    return [NSData dataWithBytesNoCopy:objDataObject length:numBytesDecrypted]; 
} 

}

我调用上面的方法是这样的:

CryptoClass *obj = [CryptoClass new]; 
NSData *objData = [obj AES256EncryptWithKey:@"hell"]; 

NSData *val = [obj AES256DecryptWithKey:@"hell" andForData:objData ]; 

NSLog(@"decrypted string is : %@ AND LENGTH IS %d",[val description],[val length]); 

解密似乎并不在所有发生和加密 - 我我不确定,请在这里帮助我。

+0

看看我的回答[加密问题] [1] [1]:http://stackoverflow.com/questions/11668993/osx-aes-encryption-is-not-working/11738462 – Amitg2k12 2012-07-31 11:02:23

回答