iPhoneSDK开发136技系列:第25技获取字符串的MD5

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上的实现代码也很简单:

  
  
  
  
  1. #import <Foundation/Foundation.h>  
  2. #import "CommonCrypto/CommonDigest.h"  
  3.  
  4. @interface NSString (MD5)  
  5.  
  6. - (NSString *) MD5String;  
  7.  
  8. @end  
  9.  
  10. @implementation NSString (MD5)  
  11.  
  12. - (NSString *) MD5String {  
  13.     const char *cStr = [self UTF8String];  
  14.     unsigned char digest[CC_MD5_DIGEST_LENGTH];  
  15.     CC_MD5(cStr, strlen(cStr), digest);  
  16.  
  17.     char md5string[CC_MD5_DIGEST_LENGTH*2];  
  18.  
  19.     int i;  
  20.     for(i = 0; i < CC_MD5_DIGEST_LENGTH; i++) {  
  21.         sprintf(md5string+i*2, "%02X", digest[i]);  
  22.     }  
  23.  
  24.     return [NSString stringWithCString:md5string encoding:NSASCIIStringEncoding];  
  25. }  
  26.  
  27. @end 

其中需要注意的是,使用MD相关函数之前需要导入CommonCrypto:

  
  
  
  
  1. #import < CommonCrypto/CommonDigest.h > 

 

你可能感兴趣的:(加密,MD5,移动开发,职场,休闲)