MD5的原理和實現

簡單易懂:

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

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章