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

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值