天天看點

錄音筆傳輸檔案自動校驗

一、引言

校驗檔案完整的必要性:日常工作生活中,常會需要從網絡上擷取各種各樣的資料,但下載下傳的檔案是否安全有待考量;即使安全,假設下載下傳不完整,也會導緻不可用;更糟糕的是有可能被别人修改過,加了木馬、病毒、廣告等,下載下傳資料時校驗其完整性是很有必要的。

小編(●—●)所在項目中,C1錄音筆、C1Pro錄音筆、C1Max錄音筆錄制産生的分别是avc、avo、opus格式的音頻檔案。筆端産生的檔案,可以通過BLE和WiFi熱點兩種方式,傳輸到錄音助手App端。項目測試需要校驗筆端生成檔案的完整性及傳輸到App的檔案的完整性。

二、檔案校驗與校驗方法

1、檔案校驗

檔案校驗,是指檔案的 MD5、SHA1、CRC32 的值的檢驗。

MD5資訊摘要算法(MD5 Message-Digest Algorithm),一種被廣泛使用的密碼散列函數,可以産生出一個128位(16位元組)的散列值(hash value),用于確定資訊傳輸完整一緻。

SHA-1(Secure Hash Algorithm 1,安全雜湊演算法1)是一種密碼散列函數。SHA-1可以生成一個被稱為消息摘要的160位(20位元組)散列值,散列值通常的呈現形式為40個十六進制數。

CRC(Cyclic Redundancy Check)的全稱是循環備援校驗,是資料通信領域中最常用的一種查錯校驗碼。CRC32檢錯能力極強,開銷小,易于用編碼器及檢測電路實作。

2、校驗值

校驗值是一組16進制數,不區分大小寫,校驗值本身隻與檔案内容有關,隻要檔案内容不改變校驗值就不變;如複制/剪切/粘貼,修改檔案建立時間/通路時間,修改檔案讀/寫/執行屬性等操作都不會導緻校驗值發生改變。

3、linux環境校驗檔案完整性

Linux下可以直接使用md5sum/sha1sum/sha256sum指令直接計算檔案的對應校驗值。

例如:

md5sum/works/Hello.mp3

sha1sum/works/Hello.mp3

sha256sum/works/Hello.mp3

4、Windows環境校驗檔案完整性

Windows下可以使用Windows自帶的certutil指令來計算一個檔案的校驗值。

certutil支援的算法有:MD2 MD4 MD5 SHA1SHA256 SHA384 SHA512。

certutil的使用方法:執行“certutil-hashfile 檔案名 校驗值類型”,即可計算出對應檔案的校驗值。

例如:certutil -hashfile C:\Hello.mp3MD5

錄音筆傳輸檔案自動校驗

執行結果如圖,該檔案的MD5值是2ffcbdab360aa29d0ebc6aee94c0a625

三、筆端傳輸檔案驗證,問題解決思路

1、(C1 Max錄音筆檔案)利用opusinfo,獲得每個opus檔案的資訊,進行筆端檔案和APP端傳輸完畢檔案的資訊對比;

錄音筆傳輸檔案自動校驗

2、(C1、C1Pro、C1max)錄音筆産生的音頻檔案,傳輸到App的音頻檔案,進行MD5校驗;

MD5唯一性:不同的輸入得到的不同的結果, 任何一個位元組的改動都會導緻MD5變化。

avc avo(自研資料類型)、opus檔案傳輸驗證

錄音筆傳輸檔案自動校驗
錄音筆傳輸檔案自動校驗
錄音筆傳輸檔案自動校驗

示例:筆端産生的opus音頻檔案,傳輸到App的音頻檔案,進行MD5校驗,校驗值一緻,可确定傳輸後檔案是完整的。

錄音筆傳輸檔案自動校驗

四、自動校驗思路及實作

1、批量校驗思路

(1). 依次擷取app和pen目錄下的音頻檔案路徑(opus為例);

(2). 指令行擷取到MD5值并提取,存放在對應的list中;

(3). 對檔案校驗MD5存放結果的清單listpen和listapp,求差集;

(4). 如果差集非空,證明MD5校驗存在不一緻,也即傳輸完畢的檔案存在不一緻的情況。

(5). 檔案問題定位:APP端存儲的檔案是時間戳,可以轉為普通時間計時,找到對應的筆端檔案;

2、校驗結果

求差集示例——MD5校驗全部一緻,校驗通過

錄音筆傳輸檔案自動校驗
錄音筆傳輸檔案自動校驗

求差集示例—MD5校驗,有不一緻情況

錄音筆傳輸檔案自動校驗
錄音筆傳輸檔案自動校驗

注:參考文章

https://blog.csdn.net/xkwy100/article/details/80297968

https://blog.csdn.net/sunshineddMMZ/article/details/79917812

https://blog.csdn.net/u012611878/article/details/54000607