iPhoneSDK开发136技系列:第25技获取字符串的MD5值
本系列文章基于日本最近热卖的《PhoneSDK开发136技》一书的目录和实例代码。由于无法获得此书,因此只能猜测加个人发挥。确切地说应该是一个读码笔记系列。
MD5(Message-Digest Algorithm 5)是在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明,经MD2、MD3和MD4发展而来。
MD5将任意长度的“字节串”变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算法。MD5被广泛用于加密和解密技术上,在很多操作系统中,用户的密码是以MD5值(或类似的其它算法)的方式保存的, 用户Login的时候,系统是把用户输入的密码计算成MD5值,然后再去和系统中保存的MD5值进行比较,而系统并不“知道”用户的密码是什么。处于安全考虑,客户端和服务器端之间的数据也通常对密码等敏感数据进行加密。
iPhone上的实现代码也很简单:
- #import <Foundation/Foundation.h>
- #import "CommonCrypto/CommonDigest.h"
- @interface NSString (MD5)
- - (NSString *) MD5String;
- @end
- @implementation NSString (MD5)
- - (NSString *) MD5String {
- const char *cStr = [self UTF8String];
- unsigned char digest[CC_MD5_DIGEST_LENGTH];
- CC_MD5(cStr, strlen(cStr), digest);
- char md5string[CC_MD5_DIGEST_LENGTH*2];
- int i;
- for(i = 0; i < CC_MD5_DIGEST_LENGTH; i++) {
- sprintf(md5string+i*2, "%02X", digest[i]);
- }
- return [NSString stringWithCString:md5string encoding:NSASCIIStringEncoding];
- }
- @end
其中需要注意的是,使用MD相关函数之前需要导入CommonCrypto:
- #import < CommonCrypto/CommonDigest.h >