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