简单易懂:
MD5将任意长度的“字节串”变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算法,换句话说就是,即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串,从数学原理上说,是因为原始的字符串有无穷多个,这有点象不存在反函数的数学函数。
实现:
//.h
#import <Foundation/Foundation.h>
@interface PGMD5StringUtil : NSObject
+(NSString *)md5String:(NSString *)string;
@end
//.m
#import "PGMD5StringUtil.h"
#import <CommonCrypto/CommonDigest.h>
@implementation PGMD5StringUtil
//32 bite,lowercase
+(NSString *)md5String:(NSString *)string{
const char * cStr = [string UTF8String];
unsigned char digest[CC_MD5_DIGEST_LENGTH];
CC_MD5(cStr, strlen(cStr), digest);
NSMutableString * encryptedString = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH*2];
for (int i = 0; i < CC_MD5_DIGEST_LENGTH; i++) {
//小写 32位
[encryptedString appendFormat:@"%02x",digest[i]];
//大写 32位
// // [encryptedString appendFormat:@"%02X",digest[i]];
}
return encryptedString;
}
@end