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
-
- @class
NSString; -
- @interface
NSData (Encryption) -
- -
(NSData *)AES256EncryptWithKey:(NSString *)key; //加密 - -
(NSData *)AES256DecryptWithKey:(NSString *)key; //解密 -
- @end
NSData+AES.m文件
- //
- //
NSData-AES.h - //
Smile - //
- //
Created by 周 敏 on 12-11-24. - //
Copyright (c) 2012年 BOX. All rights reserved. - //
-
- #import
"NSData+AES.h" - #import
-
- @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
2、BASE64编码
首先下载GTMBase64文件,在工程中加入三个文件
GTMDefines.h
GTMBase64.h
GTMBase64.m
你可以在这里找到这三个文件
http://code.google.com/p/google-toolbox-for-mac/source/browse/trunk/Foundation/?r=87
GTMDefines.h
GTMBase64.h
GTMBase64.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加密
NSString+MD5.h文件
- //
- //
NSString+MD5Encrypt.h - //
Smile - //
- //
Created by 周 敏 on 12-11-24. - //
Copyright (c) 2012年 BOX. All rights reserved. - //
-
- #import
-
- @interface
NSString (MD5) -
- -
(NSString *)md5Encrypt; -
- @end
NSString+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:@"X", result[i]]; -
return [hash lowercaseString]; - }
-
- @end
将字符串进行MD5加密,返回加密后的字符串。
#import
<CommonCrypto/CommonDigest.h>
//
Need to import for CC_MD5 access
-
(NSString
*)md5:(NSString
*)str
{
const
char
*cStr
=
[str
UTF8String];
unsigned
char
result[
16];
CC_MD5(cStr,
strlen(cStr),
result);
//
This is the md5 call
return
[NSString
stringWithFormat:
@"
xxxxxxxxxxxxxxxx
",
result[
0],
result[
1],
result[
2],
result[
3],
result[
4],
result[
5],
result[
6],
result[
7],
result[
8],
result[
9],
result[
10],
result[
11],
result[
12],
result[
13],
result[
14],
result[
15]
];
}
{
}
demo含有这3种的使用方式,在AppDelegate.m文件里面,不会使用的自己参考一下。
demo下载:http://download.csdn.net/detail/z251257144/4884004
demo下载:http://download.csdn.net/detail/z251257144/4884004
http://blog.csdn.net/hsyj_0001/article/details/7607963