簡單易懂:
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