iOS NSString字符串MD5加密

为了使保存的密码更安全, 我们应该实现一个NSString的分类,为密码创建一个MD5的哈希值,而且并把它保存在keychain中;keychain是在设备中保存关键数据的唯一安全的地方。

step1. 新建文件

新建文件,在模板列表中选择Objective-C Category项。单击Next按钮,输入“MD5”作为这个创建的分类的名字,然后在CategoryOn下拉菜单中选择NSString,表明是NSString的Category。

step2. 头文件

#import <Foundation/Foundation.h>

@interface NSString (MD5)

- (NSString *) MD5;

@end

step3. 源文件

#import "NSString+MD5.h"
#import <CommonCrypto/CommonDigest.h>

@implementation NSString (MD5) 

- (NSString *) MD5{
	
	//转化为UTF8格式字符串
	const char *ptr = [self UTF8String];
	
	//开辟一个16字节数组
	unsigned char md5Buffer[CC_MD5_DIGEST_LENGTH];
	
	//调用官方封装的加密方法, 将ptr开始的字符串存储到md5Buffer[]中
	CC_MD5(ptr, strlen(ptr), md5Buffer);
	
	//转换位NSString并返回
	NSMutableString *output = [NSMutableString stringWithCapacity: CC_MD5_DIGEST_LENGTH * 2];
	for (int i = 0; i < CC_MD5_DIGEST_LENGTH; i ++) {
		[output appendFormat: @"%02x", md5Buffer[i]];
	}
	
	/*
	 * `x`表示十六进制,%02 意思是不足两位用0补齐,如果多于2位则不影响
	 * NSLog("%02x", 0x666);   //输出 `666`
	 * NSLog("%02x", 0x3);		//输出 `03` 
	 */
	
	return output;

}

@end
updatedupdated2016-03-132016-03-13