文件MD5

作者: 早起的虫儿子被鸟吃 | 来源:发表于2017-04-26 16:41 被阅读0次

代码如下:

+(NSString*)getFileMD5WithPath:(NSString*)path

{

return(__bridge_transferNSString*)FileMD5HashCreateWithPath((__bridgeCFStringRef)path,FileHashDefaultChunkSizeForReadingData);

}

CFStringRefFileMD5HashCreateWithPath(CFStringReffilePath,size_tchunkSizeForReadingData) {

// Declare needed variables

CFStringRefresult =NULL;

CFReadStreamRefreadStream =NULL;

// Get the file URL

CFURLReffileURL =

CFURLCreateWithFileSystemPath(kCFAllocatorDefault,

(CFStringRef)filePath,

kCFURLPOSIXPathStyle,

(Boolean)false);

if(!fileURL)gotodone;

// Create and open the read stream

readStream =CFReadStreamCreateWithFile(kCFAllocatorDefault,

(CFURLRef)fileURL);

if(!readStream)gotodone;

booldidSucceed = (bool)CFReadStreamOpen(readStream);

if(!didSucceed)gotodone;

// Initialize the hash object

CC_MD5_CTXhashObject;

CC_MD5_Init(&hashObject);

// Make sure chunkSizeForReadingData is valid

if(!chunkSizeForReadingData) {

chunkSizeForReadingData =FileHashDefaultChunkSizeForReadingData;

}

// Feed the data to the hash object

boolhasMoreData =true;

while(hasMoreData) {

uint8_tbuffer[chunkSizeForReadingData];

CFIndexreadBytesCount =CFReadStreamRead(readStream,(UInt8*)buffer,(CFIndex)sizeof(buffer));

if(readBytesCount == -1)break;

if(readBytesCount ==0) {

hasMoreData =false;

continue;

}

CC_MD5_Update(&hashObject,(constvoid*)buffer,(CC_LONG)readBytesCount);

}

// Check if the read operation succeeded

didSucceed = !hasMoreData;

// Compute the hash digest

unsignedchardigest[CC_MD5_DIGEST_LENGTH];

CC_MD5_Final(digest, &hashObject);

// Abort if the read operation failed

if(!didSucceed)gotodone;

// Compute the string result

charhash[2*sizeof(digest) +1];

for(size_ti =0; i

snprintf(hash + (2* i),3,"%02x", (int)(digest[i]));

}

result =CFStringCreateWithCString(kCFAllocatorDefault,(constchar*)hash,kCFStringEncodingUTF8);

done:

if(readStream) {

CFReadStreamClose(readStream);

CFRelease(readStream);

}

if(fileURL) {

CFRelease(fileURL);

}

returnresult;

}

相关文章

  • Python使用Md5的姿势

    一、计算String的Md5 二、计算文件的Md5 三、计算小文件的Md5

  • Mac 修改文件MD5值

    1、查看文件的MD5值 打开终端,键入 MD5 文件地址 2、修改文件的MD5值 在1的步骤下,键入...

  • swift 文件 MD5

    swift 文件 MD5 import CommonCrypto /* * 文件的MD5 */ func md5F...

  • Mac 利用终端命令查看MD5/SHA1/SHA256

    Mac系统中的终端可以通过命令查看文件或者字符串的MD5值等。 查看文件MD5: 查看字符串MD5: 查看文件SH...

  • 【MD5】多文件生成md5

    如何针对多个文件生成一个md5, 本文记录操作方式,进行备忘 生成多文件md5 1.生成所有文件的md5值 服务端...

  • Android数据加密

    MD5加密算法实现: 1.计算字符串MD5值 2.计算文件的MD5值 // 计算文件的 MD5 值 3.采用nio...

  • mac检验文件命令

    查看MD5/ md5 [空格][文件路径] 查看SHA1 openssl dgst -sha1[空格][文件路径]...

  • Mac & 计算文件的MD5值

    Mac计算文件的MD5值,直接使用终端命令即可 直接输入 md5 + 空格,输入文件路径 or 直接将文件拖入终端...

  • 笔记-MD5加密

    MD5:全称Message Digest Algorithm MD5(消息摘要算法5)   每个文件的MD5值都是...

  • iOS AES和MD5加密

    1、AES .h文件 .m文件 2、MD5 .h文件 .m文件

网友评论

      本文标题:文件MD5

      本文链接:https://www.haomeiwen.com/subject/ypzizttx.html