objective-c – 是否有一个MD5库不需要整个输入的同时?

objective-c – 是否有一个MD5库不需要整个输入的同时?,第1张

概述我正在开发Objective C Cocoa应用程序.我测试了 CC_MD5 in CommonCrypto,它工作得很好;然而,当我给它5个gygabyte文件,我的整个电脑冻结和坠毁. MD5算法处理输入为512字节的块,并不真正要求所有的输入一次.目标C或C中是否有一个库,要求下一个512字节的块,而不是一次全部输入? 在这里,在obj-C中计算大文件的MD5是一个很好的线索: http:/ 我正在开发Objective C Cocoa应用程序.我测试了 CC_MD5 in CommonCrypto,它工作得很好;然而,当我给它5个gygabyte文件,我的整个电脑冻结和坠毁. MD5算法处理输入为512字节的块,并不真正要求所有的输入一次.目标C或C中是否有一个库,要求下一个512字节的块,而不是一次全部输入?解决方法 在这里,在obj-C中计算大文件的MD5是一个很好的线索:
http://www.iphonedevsdk.com/forum/iphone-sdk-development/17659-calculating-md5-hash-large-file.html

这是有人想到的解决方案:

+(Nsstring*)fileMD5:(Nsstring*)path{    NSfileHandle *handle = [NSfileHandle fileHandleForReadingAtPath:path];    if( handle== nil ) return @"ERROR GETTING file MD5"; // file dIDnt exist    CC_MD5_CTX md5;    CC_MD5_Init(&md5);    BOol done = NO;    while(!done)    {        NSautoreleasePool * pool = [NSautoreleasePool new];        NSData* fileData = [handle readDataOfLength: CHUNK_SIZE ];        CC_MD5_Update(&md5,[fileData bytes],[fileData length]);        if( [fileData length] == 0 ) done = YES;                [pool drain];    }    unsigned char digest[CC_MD5_DIGEST_LENGTH];    CC_MD5_Final(digest,&md5);    Nsstring* s = [Nsstring stringWithFormat: @"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",digest[0],digest[1],digest[2],digest[3],digest[4],digest[5],digest[6],digest[7],digest[8],digest[9],digest[10],digest[11],digest[12],digest[13],digest[14],digest[15]];    return s;}
总结

以上是内存溢出为你收集整理的objective-c – 是否有一个MD5库不需要整个输入的同时?全部内容,希望文章能够帮你解决objective-c – 是否有一个MD5库不需要整个输入的同时?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1251672.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存