1. 程式人生 > >iOS 獲取檔案md5 get file md5

iOS 獲取檔案md5 get file md5

轉載地址:http://www.jianshu.com/p/c7868dc20785
#define FileHashDefaultChunkSizeForReadingData 1024*8 
#include <CommonCrypto/CommonDigest.h>

+(NSString*)getFileMD5WithPath:(NSString*)path
{
    return (__bridge_transfer NSString *)FileMD5HashCreateWithPath((__bridge CFStringRef)path, FileHashDefaultChunkSizeForReadingData);
}

CFStringRef
FileMD5HashCreateWithPath(CFStringRef filePath,size_t chunkSizeForReadingData) { // Declare needed variables CFStringRef result = NULL; CFReadStreamRef readStream = NULL; // Get the file URL CFURLRef fileURL = CFURLCreateWithFileSystemPath(kCFAllocatorDefault, (CFStringRef
)filePath, kCFURLPOSIXPathStyle, (Boolean)false); if (!fileURL) goto done; // Create and open the read stream readStream = CFReadStreamCreateWithFile(kCFAllocatorDefault, (CFURLRef
)fileURL); if (!readStream) goto done; bool didSucceed = (bool)CFReadStreamOpen(readStream); if (!didSucceed) goto done; // Initialize the hash object CC_MD5_CTX hashObject; CC_MD5_Init(&hashObject); // Make sure chunkSizeForReadingData is valid if (!chunkSizeForReadingData) { chunkSizeForReadingData = FileHashDefaultChunkSizeForReadingData; } // Feed the data to the hash object bool hasMoreData = true; while (hasMoreData) { uint8_t buffer[chunkSizeForReadingData]; CFIndex readBytesCount = CFReadStreamRead(readStream,(UInt8 *)buffer,(CFIndex)sizeof(buffer)); if (readBytesCount == -1) break; if (readBytesCount == 0) { hasMoreData = false; continue; } CC_MD5_Update(&hashObject,(const void *)buffer,(CC_LONG)readBytesCount); } // Check if the read operation succeeded didSucceed = !hasMoreData; // Compute the hash digest unsigned char digest[CC_MD5_DIGEST_LENGTH]; CC_MD5_Final(digest, &hashObject); // Abort if the read operation failed if (!didSucceed) goto done; // Compute the string result char hash[2 * sizeof(digest) + 1]; for (size_t i = 0; i < sizeof(digest); ++i) { snprintf(hash + (2 * i), 3, "%02x", (int)(digest[i])); } result = CFStringCreateWithCString(kCFAllocatorDefault,(const char *)hash,kCFStringEncodingUTF8); done: if (readStream) { CFReadStreamClose(readStream); CFRelease(readStream); } if (fileURL) { CFRelease(fileURL); } return result; }

相關推薦

iOS 獲取檔案md5 get file md5

轉載地址:http://www.jianshu.com/p/c7868dc20785 #define FileHashDefaultChunkSizeForReadingData 1024*8 #include <CommonCrypto/CommonDigest.

iOS獲取檔案長度和檔案大小

#pragma 獲取檔案大小 - (CGFloat) getFileSize:(NSString *)path { NSFileManager *fileManager = [[NSFileM

iOS獲取檔案md5的方法

由於移動裝置的記憶體有限 需要處理檔案時就得格外小心 以下是段將檔案分塊讀出 並且計算md5值的一段函式 #import <CommonCrypto/CommonDigest.h> NSFileHandle *handle = [NSFileHandle fi

window/linux下獲取檔案MD5

MD5訊息摘要演算法(英語: MD5 Message-Digest Algorithm), 主要用於確保資訊傳輸過程的一致性校驗。   首先介紹兩個工具: window: WinMD5Free Linux: md5sum 這兩個工具的作用是驗證自己寫的程式

瀏覽器獲取檔案MD5

能做到大檔案md5值的獲取,但是檔案越大耗時越久。 spark-md5工具包:https://download.csdn.net/download/weixin_36524613/10545957 <!DOCTYPE html> <html lang="en"> &l

Windows下獲取檔案md5碼的方法

1.certutil 命令簡介 本來想找一個工具 算一個檔案的md5 或者是sha 值來著. 找到一個說法是 可以使用 windows 自帶的命令列來處理 具體命令   certutil -hashfile 容器與容器雲(第2版).pdf sha512 相關的命令幫助為:

java獲取檔案MD5獲取字串MD5

 獲取md5值4個步驟: 1.建立MessageDigest物件md5。 2.使用md的update(byte[] buffer)方法將資料更新到md5物件中。 3.使用md5的digest()方法獲得摘要,該摘要是一個長度為16的陣列。 4.將該摘要陣列轉換為32位

根據URL網路地址伺服器檔案獲取檔案MD5,簡單

由於公司需要校驗上傳的檔案是否有修改,本來是用檔案的最後一次修改時間確定的,不過怎麼獲取url內檔案的方式沒有用心去找,客戶端那邊也不使用這種了,改為使用讀取檔案的MD5,網上搜羅了一下,最後總結為以下程式碼,正常使用,不足的地方請指點。 path是url,http之類的。  匯入的包都

如何計算檔案MD5 sha1 -- 微軟MD5/SHA1 校驗工具 Microsoft File Checksum Integrity Verifier

微軟出品的小工具(Microsoft File Checksum Integrity Verifier)。 https://www.microsoft.com/en-us/download/detai

Python寫自動化之獲取檔案MD5

使用Python 獲取檔案的MD5 值是一件很簡單的事情,Python 提供了md5 和 hashlib 兩個模組,都可以獲取到檔案的md5值。 程式碼如下: #獲取檔案的MD5值,適用於小檔案

獲取檔案MD5,SHA1校驗碼

下載完軟體,如果對於輸入源不放心可以對比檔案的md5碼或者網站上提供的校驗碼: windows系統使用hashtab軟體 linux,mac系統可以使用命令獲取: /usr/bin/openssl s

Golang 獲取檔案 md5 校驗和的方法及效率比較

近期有一個需求:獲取多個檔案 md5 校驗和判斷是否存在重複檔案,因為檔案數量較多,有的檔案還比較大,需要處理的檔案還沒有到位,我就考慮了一下效率的問題。目前我已知的 Golang 中獲取 md5 校驗和的方法有兩個,這裡直接給出實現原始碼。 packag

JAVA獲取檔案MD5

1.推薦如下方法: /** * 推薦此方法獲取檔案MD5 * @param path 檔案路徑 * @return */ public static String get

Android獲取檔案MD5

package my.bag; import Java.io.File; import java.io.FileInputStream; import java.math.BigInteger; import java.security.MessageDigest; import java.util.Ha

JAVA獲取檔案MD5

/** * Md5校驗工具類 * @author Fengwx */ public class MD5Util { private static final char[] hexDigits = {'0', '1', '2', '3', '4', '5',

java獲取檔案md5

最近下載了一些檔案,不是官方的,為了核對MD5碼寫了一個java版本的,小工具。 package pri.yang.MD5; import java.io.File; import java.io.FileInputStream; import java.io.FileN

獲取檔案md5(java & php)

每個檔案都可以用MD5驗證程式算出一個固定的md5碼來,它是一個檔案的檔案簽名,可用於驗證自己下載的軟體是否為原版。百度網盤的“秒傳”應該也用到了這個,即上傳之前首先計算該檔案的md5值,然後看伺服器上有沒有該檔案,有的話從服務端直接拷貝,節省上傳時間和降低網路負擔。 ja

[Qt] 獲取檔案MD5碼(支援大檔案) [2012-03-28更新]

#include <QString> #include <QByteArray> #include <QCryptographicHash> #include <QFile> #include <QDebug>

iOS 對比兩個檔案內容是否相同 MD5摘要 與 直接比較

直接比較兩個檔案的內容 NSString *path = [[NSBundlemainBundle] bundlePath]; NSString *filePath1 = [path str

C#獲取檔案/位元組陣列MD5值方法

public static string GetMD5Hash(string fileName) { try { FileStream file = new FileStream