md5加密

来源:互联网 发布:管家婆附加数据库 编辑:程序博客网 时间:2024/05/18 02:42

    MD5的全称是Message-Digest Algorithm 5,在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明,经MD2、MD3和MD4发展而来。
    MD5将任意长度的“字节串”变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算法,换句话说就是,即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串,从数学原理上说,是因为原始的字符串有无穷多个,这有点象不存在反函数的数学函数。

    MD5的典型应用是对一段Message(字节串)产生fingerprint(指纹),以防止被“篡改”。举个例子,你将一段话写在一个叫 readme.txt文件中,并对这个readme.txt产生一个MD5的值并记录在案,然后你可以传播这个文件给别人,别人如果修改了文件中的任何内容,你对这个文件重新计算MD5时就会发现。如果再有一个第三方的认证机构,用MD5还可以防止文件作者的“抵赖”,这就是所谓的数字签名应用。
    MD5还广泛用于加密和解密技术上,在很多操作系统中,用户的密码是以MD5值(或类似的其它算法)的方式保存的, 用户Login的时候,系统是把用户输入的密码计算成MD5值,然后再去和系统中保存的MD5值进行比较,而系统并不“知道”用户的密码是什么。


#import <Foundation/Foundation.h>

#import <CommonCrypto/CommonDigest.h>


@interface MD5Hash :NSObject {

}

+ (NSString*)md5:(NSString*)str;

@end


 

#import "MD5Hash.h"

@implementation MD5Hash

 

+ (NSString*)md5:(NSString*)str {

   const char*cStr =[strUTF8String];

   unsigned char result[16];

   CC_MD5(cStr, strlen(cStr), result);

    return [NSStringstringWithFormat:@"XXXXXXXXXXXXXXXX",

            result[0], result[1], result[2], result[3],

            result[4], result[5], result[6], result[7],

            result[8], result[9], result[10], result[11],

            result[12], result[13], result[14], result[15]];

}

@end

 

// MD5字符串加密使用示例

NSString *myMD5String = [MD5Hash md5:@"123456"];

NSLog(@"MD5String: %@", myMD5String);


原创粉丝点击