BigBigWorld

Chance001的技术博客
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

iPhone 开发中验证字符串/文件的MD5

Posted on 2010-12-14 17:20  chance001  阅读(579)  评论(0)    收藏  举报
+(NSString*) md5:(NSString*) str
{  
    
const char *cStr = [str UTF8String];  
    unsigned 
char result[CC_MD5_DIGEST_LENGTH];  
    CC_MD5( cStr, strlen(cStr), result );  
    
    NSMutableString 
*hash = [NSMutableString string];
    
for(int i=0;i<CC_MD5_DIGEST_LENGTH;i++)
    {
        [hash appendFormat:
@"%02X",result[i]];
    }
    
return [hash lowercaseString];
}
#define CHUNK_SIZE 1024  
+(NSString *)file_md5:(NSString*) path
{  
    NSFileHandle
* handle = [NSFileHandle fileHandleForReadingAtPath:path];  
    
if(handle == nil)  
        
return nil;  
    
    CC_MD5_CTX md5_ctx;  
    CC_MD5_Init(
&md5_ctx);  
    
    NSData
* filedata;  
    
do {  
        filedata 
= [handle readDataOfLength:CHUNK_SIZE];  
        CC_MD5_Update(
&md5_ctx, [filedata bytes], [filedata length]);  
    }  
    
while([filedata length]);  
    
    unsigned 
char result[CC_MD5_DIGEST_LENGTH];  
    CC_MD5_Final(result, 
&md5_ctx);  
    
    [handle closeFile];  
    
    NSMutableString 
*hash = [NSMutableString string];
    
for(int i=0;i<CC_MD5_DIGEST_LENGTH;i++)
    {
        [hash appendFormat:
@"%02x",result[i]];
    }
    
return [hash lowercaseString];
}