-
谢谢作者 旨在学习交流http://www.2cto.com/kf/201212/176351.html
iOS常用加密方法(aes、md5、base64)
1、AES加密NSData+AES.h文件//// NSData-AES.h// Smile//// Created by 周 敏 on 12-11-24.// Copyright (c) 2012年 BOX. All rights reserved.//#import <Foundation/Foundation.h>@class NSString;@interface NSData (Encryption)- (NSData *)AES256EncryptWithKey:(NSString *)key; //加密- (NSData *)AES256DecryptWithKey:(NSString *)key; //解密@endNSData+AES.m文件//// NSData-AES.h// Smile//// Created by 周 敏 on 12-11-24.// Copyright (c) 2012年 BOX. All rights reserved.//#import "NSData+AES.h"#import <CommonCrypto/CommonCryptor.h>@implementation NSData (Encryption)- (NSData *)AES256EncryptWithKey:(NSString *)key {//加密char keyPtr[kCCKeySizeAES256+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 numBytesEncrypted = 0;CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, kCCAlgorithmAES128,kCCOptionPKCS7Padding | kCCOptionECBMode,keyPtr, kCCBlockSizeAES128,NULL,[self bytes], dataLength,buffer, bufferSize,&numBytesEncrypted);if (cryptStatus == kCCSuccess) {return [NSData dataWithBytesNoCopy:buffer length:numBytesEncrypted];}free(buffer);return nil;}- (NSData *)AES256DecryptWithKey:(NSString *)key {//解密char keyPtr[kCCKeySizeAES256+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 | kCCOptionECBMode,keyPtr, kCCBlockSizeAES128,NULL,[self bytes], dataLength,buffer, bufferSize,&numBytesDecrypted);if (cryptStatus == kCCSuccess) {return [NSData dataWithBytesNoCopy:buffer length:numBytesDecrypted];}free(buffer);return nil;}@end这里AES在iOS加过密以后以nsdata的形式存下来,如果想以nsstring形式存储,那么对nsdata进行base64位编码。2、BASE64编码首先下载GTMBase64文件,在工程中加入三个文件GTMDefines.hGTMBase64.hGTMBase64.m你可以在这里找到这三个文件http://code.google.com/p/google-toolbox-for-mac/source/browse/trunk/Foundation/?r=87你也可以在下面的demo里面找到这3个文件,demo会完整实现文章里面常用的3种编码方法。我在此稍微封装一下:.h文件#pragma mark - base64+ (NSString*)encodeBase64String:(NSString *)input;+ (NSString*)decodeBase64String:(NSString *)input;+ (NSString*)encodeBase64Data:(NSData *)data;+ (NSString*)decodeBase64Data:(NSData *)data;.m文件#pragma mark - base64+ (NSString*)encodeBase64String:(NSString * )input {NSData *data = [input dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];data = [GTMBase64 encodeData:data];NSString *base64String = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease];return base64String;}+ (NSString*)decodeBase64String:(NSString * )input {NSData *data = [input dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];data = [GTMBase64 decodeData:data];NSString *base64String = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease];return base64String;}+ (NSString*)encodeBase64Data:(NSData *)data {data = [GTMBase64 encodeData:data];NSString *base64String = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease];return base64String;}+ (NSString*)decodeBase64Data:(NSData *)data {data = [GTMBase64 decodeData:data];NSString *base64String = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease];return base64String;}3、MD5加密 www.2cto.comNSString+MD5.h文件//// NSString+MD5Encrypt.h// Smile//// Created by 周 敏 on 12-11-24.// Copyright (c) 2012年 BOX. All rights reserved.//#import <CommonCrypto/CommonDigest.h>@interface NSString (MD5)- (NSString *)md5Encrypt;@endNSString+MD5.m文件//// NSString+MD5Encrypt.h// Smile//// Created by 周 敏 on 12-11-24.// Copyright (c) 2012年 BOX. All rights reserved.//#import "NSString+MD5.h"@implementation NSString (MD5)- (NSString *)md5Encrypt {const char *original_str = [self UTF8String];unsigned char result[CC_MD5_DIGEST_LENGTH];CC_MD5(original_str, strlen(original_str), result);NSMutableString *hash = [NSMutableString string];for (int i = 0; i < 16; i++)[hash appendFormat:@"%02X", result[i]];return [hash lowercaseString];}@end
iOS常用加密方法(aes、md5、base64)
最新推荐文章于 2023-08-23 09:53:42 发布