IOS AES

来源:互联网 发布:asp网络验证源码 编辑:程序博客网 时间:2024/06/07 03:08
For NSData+AES.h
#import#import@interface NSData (AES)- (NSData*) EncryptAES: (NSString *) key;- (NSData *) DecryptAES: (NSString *) key;@end


For NSData+AES.m
#import"NSData+AES.h"    @implementationNSData(AES)    - (NSData*) EncryptAES:(NSString *) key    {       char keyPtr[kCCKeySizeAES256+1];       bzero( keyPtr, sizeof(keyPtr) );       [key getCString: keyPtr maxLength:sizeof(keyPtr) encoding: NSUTF16StringEncoding];       size_t numBytesEncrypted = 0;       NSUInteger dataLength = [self length];       size_t bufferSize = dataLength +kCCBlockSizeAES128;       void *buffer = malloc(bufferSize);       CCCryptorStatus result = CCCrypt( kCCEncrypt,kCCAlgorithmAES128, kCCOptionPKCS7Padding,                                   keyPtr,kCCKeySizeAES256,                                   NULL,                                   [selfbytes], [self length],                                   buffer,bufferSize,                                  &numBytesEncrypted );       if( result == kCCSuccess )           return[NSData dataWithBytesNoCopy:buffer length:numBytesEncrypted];       return nil;    }    - (NSData *) DecryptAES:(NSString *) key    {       char keyPtr[kCCKeySizeAES256+1];       bzero( keyPtr, sizeof(keyPtr) );       [key getCString: keyPtr maxLength:sizeof(keyPtr) encoding: NSUTF16StringEncoding];       size_t numBytesEncrypted = 0;       NSUInteger dataLength = [self length];       size_t bufferSize = dataLength +kCCBlockSizeAES128;       void *buffer_decrypt = malloc(bufferSize);          CCCryptorStatus result = CCCrypt( kCCDecrypt ,kCCAlgorithmAES128, kCCOptionPKCS7Padding,                                   keyPtr,kCCKeySizeAES256,                                   NULL,                                   [selfbytes], [self length],                                  buffer_decrypt, bufferSize,                                  &numBytesEncrypted );       if( result == kCCSuccess )       return [NSDatadataWithBytesNoCopy:buffer_decrypt length:numBytesEncrypted];       return nil;    }    @endUsage: Import NSData+AES.h//EncryptionNSString *myString = @"This is the content";NSString *key = @"my secret key";NSData *data = [myStringdataUsingEncoding:NSUTF8StringEncoding];NSData *encryptedData = [data EncryptAES:key];//DecryptionNSString *decryptedString = [[[NSString alloc]initWithData:[encryptedData DecryptAES:key]encoding:NSUTF8StringEncoding] autorelease]; // remove autoreleaseif using ARC


    
0 0
原创粉丝点击