1. 程式人生 > >視訊檔案MD5值獲取及校驗

視訊檔案MD5值獲取及校驗

最近在做大檔案分割,分片上傳,達到充分利用網路頻寬

> 檔案的上傳與下載極易出錯,尤其涉及使用斷點續傳方式上傳或下載的檔案。
> 目的:校驗MD5值是為了防止在傳輸的過程當中丟包或者資料包被篡改

MD5值得作用:任何一個字串或檔案,無論是可執行程式、影象檔案、臨時檔案或者其他任何型別的檔案,也不管它體積多大,都有且只有一個獨一無二的MD5資訊碼,並且如果這個檔案被修改過,它的MD5碼也將隨之改變。

Mac,如何通過終端驗證檔案的MD5

在終端執行命令: md5 檔案的路徑
例如:
mac終端生成MD5

OC 根據視訊檔案路徑獲取檔案MD5

程式碼如下:
需要匯入標頭檔案和定義巨集

#import <CommonCrypto/CommonDigest.h>

#define FileHashDefaultChunkSizeForReadingData 1024*8


- (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; }

親身實踐驗證,獲取的檔案MD5值和MAC終端生產的MD5值一致,可放心使用 ~
共同學習,共同進步,共勉 ~

相關推薦

視訊檔案MD5獲取

最近在做大檔案分割,分片上傳,達到充分利用網路頻寬 > 檔案的上傳與下載極易出錯,尤其涉及使用斷點續傳方式上傳或下載的檔案。 > 目的:校驗MD5值是為了防止在傳輸的過程當中丟包或者資料包被篡改 MD5值得作用:任何一個字串或檔案,無論是可執行程

Python檔案MD5

import hashlib import os def GetFileMd5(filename): if not os.path.isfile(filename): return myHash = hashlib.md5() f = open(filenam

獲取apk證書檔案MD5

已有apk檔案,想要獲取簽名檔案的MD5簽名信息   方法一   1.先把apk解壓   2.在META_INF目錄下找到xxx.RSA檔案   3.確保安裝了jdk並且正確配置了環境變數   4.cmd中執行keytool -printcert -file xxxx.RSA目錄

獲取檔案MD5(JAVA)

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

瀏覽器獲取檔案MD5

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

EasyUi DataGrid中資料編輯方式編輯後資料獲取處理

  EasyUi中的DataGrid提供前臺編輯的相關函式。 實現客戶選中DataGrid中一列後,對選中列中的一個欄位進行編輯,並對資料進行實時校驗後,傳遞至後臺儲存的需求, 主要涉及到DataGrid中設定編輯單元格,獲取編輯單元格,編輯單元格的onchange

JAVA獲取檔案MD5

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

用loadrunner實現excel檔案下載功能的錄製

按照普通方式錄製指令碼,指令碼成功錄製後,需要做以下操作 1。定義變數: long file; long pr; int flen; 2。手工關聯: web_reg_save_param("pr","LB=","RB=","SEARCH=BODY",LAST); 第一個引數

國家商用password(五)基於SM2的軟件授權碼生成

clas 信息 ecp register 方法 序列號 mod 生成 pub 將公開密鑰算法作為軟件註冊算法的優點是Cracker非常難通過跟蹤驗證算法得到註冊機。以下。將介紹使用SM2國密算法進行軟件註冊的方法。 生成授權碼 選擇SM2橢圓曲線參數(P,a,b,N,

springboot~為Money類型添加最大和最小的註解

status ret 大於 public http money string uil lin 在spring框架裏,為我們集成了很多校驗註解,直接在字段上添加對應的註解即可,這些註解基本都是簡單保留類型的,即int,long,float,double,String等,而如果

CRC碼計算原理的最通俗詮釋

5.3.2 迴圈冗餘校驗檢錯方案       奇偶校驗碼(PCC)只能校驗一位錯誤,本節所要介紹的迴圈冗餘校驗碼(CRC)的檢錯能力更強,可以檢出多位錯誤。        1. CRC校驗原理    &nb

JDK的下載、安裝、配置 — 全程圖文詳細教程

JDK的下載、安裝、配置及校驗 — 全程圖文詳細教程 JAVA的學習和開發,必須安裝配置好JDK(java development kit java開發工具包)。Java的開發平臺主要分2類:Java SE是標準版,Java應用程式開發 Application;Java EE是企業版

使用Python隨機生成身份證號碼

GitHub : https://github.com/jayknoxqu/id-number-util 身份組成方式 中華人民共和國國家標準GB 11643-1999《公民身份號碼》中規定:公民身份號碼是特徵組合碼,由十七位數字本體碼和一位校驗碼組成。 18位數字組合的方式是:

【五 form提交】 1. form表單提交

概述 對form表單的處理是任何web application的重要環節。Play能讓你輕鬆處理簡單form,而對複雜form的處理也變得可能。 Play的form處理建立在資料繫結基礎之上。Play會查詢POST請求中可以格式化的值並將它們繫結到Form物件上。之後Play可以使用模式匹配來處理後續邏

java獲取檔案MD5獲取字串MD5

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

Java實現MD5演算法過程,並利用自帶MD5函式進行對比

文章目錄 一、環境說明 二、演算法原理概述 三、程式設計 資料結構 重要模組步驟 四、執行結果 一、環境說明 作業系統:window10 程式語言:Java (J

JAVA -----RSA加密解密簽名

由於專案要用到非對稱加密解密簽名校驗什麼的,於是參考《Java加密解密的藝術》寫一個RSA進行加密解密簽名及校驗的Demo,程式碼很簡單,特此分享! RSA加密解密類: package com.ihep; import java.io.BufferedRead

springboot~為Money型別新增最大和最小的註解

在spring框架裡,為我們集成了很多校驗註解,直接在欄位上新增對應的註解即可,這些註解基本都是簡單保留型別的,即int,long,float,double,String等,而如果你自己封裝了新的類,那麼如果要校驗它,註解這塊需要自己寫一下,像money這個型別,如果希望對它進行校驗,註解這塊需要自己去寫。

檔案或資料進行CRC

用於對一個檔案進行CRC校驗,以確保檔案資料傳輸的正確性。 廢話不多說,直接上程式碼! crc32.h #ifndef CRC_32_H #define CRC_32_H #ifdef __cplusplus extern "C" { #endif void init_c

shell指令碼實現rysnc檔案備份以及資料傳輸

通過shell指令碼整合了rsync(daemon)守護程序模式對檔案備份以及進行md5校驗的功能。 #!/bin/bash file=access_2018-12-8.logtarfile=./backup$(date +%F).tar.gz tar zcf $tar_file $filemd5sum