MD5的原理和实现

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Number_One_2015/article/details/87938119

简单易懂:

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

猜你喜欢

转载自blog.csdn.net/Number_One_2015/article/details/87938119
今日推荐