專利名稱:一種固件升級(jí)數(shù)據(jù)處理方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)應(yīng)用技術(shù)領(lǐng)域,特別涉及一種固件升級(jí)數(shù)據(jù)處理方法和裝置。
背景技術(shù):
固件,簡(jiǎn)單的說,是一種運(yùn)行在設(shè)備上的程序。早期的固件一般都是保存在EROM或 EPROM等存儲(chǔ)器中,這些固件程序是禁止被用戶直接讀取或修改的,終端用戶很難或是不 可能改變固件, 一旦固件發(fā)生錯(cuò)誤必須由專業(yè)人員用寫好程序的EROM或EPROM把原來的 EROM或EPROM更換下來,操作復(fù)雜、不方便。
如今,隨著信息技術(shù)的發(fā)展,固件已經(jīng)有了新的意義。多數(shù)情況下,它指一個(gè)系統(tǒng)最基 礎(chǔ)、最底層的軟件?,F(xiàn)有技術(shù)中,這些固件大多采用閃存作為載體。閃存(Flash Memory) 是一種在斷電情況下仍能保持所存儲(chǔ)的數(shù)據(jù)信息的存儲(chǔ)器,它具有引導(dǎo)裝入程序的功能,支 持固件的系統(tǒng)升級(jí),使得固件升級(jí)變得越來越簡(jiǎn)單。
然而即使如此,固件升級(jí)仍然面臨著一些難以解決的技術(shù)問題,比如在設(shè)備固件升級(jí) 的過程中,如果下載的升級(jí)文件數(shù)據(jù)不是設(shè)備固件升級(jí)所需要的升級(jí)文件數(shù)據(jù),則升級(jí)后的 設(shè)備不但不能夠完成升級(jí),還同時(shí)喪失了它原有的功能,破壞了設(shè)備,此外還有設(shè)備固件升 級(jí)的權(quán)限,不同權(quán)限的設(shè)備來完成不同等級(jí)的固件升級(jí),也一直沒有得到很好的解決。
發(fā)明內(nèi)容
為了解決現(xiàn)有技術(shù)中下載的固件升級(jí)數(shù)據(jù)可能破壞硬件設(shè)備的問題,本發(fā)明提供了一種 固件升級(jí)數(shù)據(jù)處理方法和系統(tǒng)。
一種固件升級(jí)數(shù)據(jù)處理方法,所述方法包括 接收升級(jí)數(shù)據(jù);
將所述升級(jí)數(shù)據(jù)按預(yù)設(shè)的長(zhǎng)度拆分為多個(gè)數(shù)據(jù)塊,并按預(yù)設(shè)的算法驗(yàn)證所述多個(gè)數(shù)據(jù)塊 中指定個(gè)數(shù)的數(shù)據(jù)塊是否均有效,如果是,從所述升級(jí)數(shù)據(jù)中提取固件數(shù)據(jù),用所述固件數(shù) 據(jù)對(duì)設(shè)備進(jìn)行固件升級(jí);否則,發(fā)出升級(jí)數(shù)據(jù)錯(cuò)誤信息,結(jié)束。
其中,所述接收升級(jí)數(shù)據(jù),具體包括 接收二進(jìn)制bin文件,從所述二進(jìn)制bin文件中獲取所述升級(jí)數(shù)據(jù)。
其中,將所述升級(jí)數(shù)據(jù)按預(yù)設(shè)的長(zhǎng)度拆分為多個(gè)數(shù)據(jù)塊,并按預(yù)設(shè)的算法驗(yàn)證所述多個(gè) 數(shù)據(jù)塊中指定個(gè)數(shù)的數(shù)據(jù)塊是否均有效,具體包括-
將所述升級(jí)數(shù)據(jù)以X字節(jié)長(zhǎng)度進(jìn)行拆分,得到多個(gè)數(shù)據(jù)塊,并對(duì)所述多個(gè)數(shù)據(jù)塊依次從 預(yù)設(shè)的初始值開始編號(hào);
判斷經(jīng)過編號(hào)的多個(gè)數(shù)據(jù)塊中,編號(hào)最大的數(shù)據(jù)塊是否滿足X字節(jié)長(zhǎng)度,如果否,發(fā)送 升級(jí)數(shù)據(jù)錯(cuò)誤信息,結(jié)束;如果是,在多個(gè)數(shù)據(jù)塊中指定要驗(yàn)證的數(shù)據(jù)塊的個(gè)數(shù),并將驗(yàn)證 計(jì)數(shù)器值設(shè)為所述初始值;
在所述指定要驗(yàn)證的數(shù)據(jù)塊中,對(duì)編號(hào)與所述驗(yàn)證計(jì)數(shù)器值相同的X字節(jié)長(zhǎng)度的數(shù)據(jù)塊 按預(yù)設(shè)的算法進(jìn)行運(yùn)算,得到Y(jié)字節(jié)長(zhǎng)度數(shù)據(jù)塊,所述Y字節(jié)長(zhǎng)度數(shù)據(jù)塊的編號(hào)與所述X 字節(jié)長(zhǎng)度數(shù)據(jù)塊的編號(hào)相同;
將所述Y字節(jié)長(zhǎng)度數(shù)據(jù)塊按預(yù)設(shè)的長(zhǎng)度拆分為第一數(shù)據(jù)塊和第二數(shù)據(jù)塊,所述第一數(shù)據(jù) 塊和第二數(shù)據(jù)塊的編號(hào)都與所述Y字節(jié)長(zhǎng)度的數(shù)據(jù)塊的編號(hào)相同;
對(duì)所述第一數(shù)據(jù)塊進(jìn)行處理,驗(yàn)證處理過的第一數(shù)據(jù)塊與所述第二數(shù)據(jù)塊是否相等;
如果否,發(fā)送升級(jí)數(shù)據(jù)錯(cuò)誤信息,結(jié)束;
如果是,所述驗(yàn)證計(jì)數(shù)器值加1,并判斷加1后的驗(yàn)證計(jì)數(shù)器值是否等于所述指定要驗(yàn) 證的數(shù)據(jù)塊的個(gè)數(shù),如果是,發(fā)送升級(jí)數(shù)據(jù)有效的信息;否則,按照與驗(yàn)證編號(hào)為初始值的 數(shù)據(jù)塊相同的方法對(duì)指定要驗(yàn)證的數(shù)據(jù)塊繼續(xù)驗(yàn)證,直到驗(yàn)證計(jì)數(shù)器值為所述指定要驗(yàn)證的 數(shù)據(jù)塊的個(gè)數(shù)。
其中,對(duì)所述第一數(shù)據(jù)塊進(jìn)行處理,具體包括
對(duì)所述第一數(shù)據(jù)塊采用求或、求和或加密的方法進(jìn)行處理。
其中,對(duì)編號(hào)與所述驗(yàn)證計(jì)數(shù)器值相同的X字節(jié)長(zhǎng)度的數(shù)據(jù)塊按預(yù)設(shè)的算法進(jìn)行運(yùn)算, 具體包括
用DES、 3DES、 RC4、 AES、 RSA、 ECC或TEA算法將編號(hào)和所述驗(yàn)證計(jì)數(shù)器值相同 的X字節(jié)長(zhǎng)度數(shù)據(jù)塊進(jìn)行運(yùn)算。
其中,用所述固件數(shù)據(jù)對(duì)設(shè)備進(jìn)行固件升級(jí),具體包括
將所述升級(jí)數(shù)據(jù)以X字節(jié)長(zhǎng)度進(jìn)行拆分,得到多個(gè)數(shù)據(jù)塊,并對(duì)所述多個(gè)數(shù)據(jù)塊依次從 預(yù)設(shè)的初始值開始編號(hào);
將升級(jí)計(jì)數(shù)器設(shè)為所述初始值;
在所述多個(gè)數(shù)據(jù)塊中,對(duì)編號(hào)與所述升級(jí)計(jì)數(shù)器值相同的X字節(jié)長(zhǎng)度數(shù)據(jù)塊按預(yù)設(shè)的算
法進(jìn)行運(yùn)算,得到Y(jié)字節(jié)長(zhǎng)度數(shù)據(jù)塊,所述Y字節(jié)長(zhǎng)度數(shù)據(jù)塊的編號(hào)與所述X字節(jié)長(zhǎng)度數(shù) 據(jù)塊的編號(hào)相同;
將所述Y字節(jié)長(zhǎng)度數(shù)據(jù)塊按預(yù)設(shè)的長(zhǎng)度拆分為第一數(shù)據(jù)塊和第二數(shù)據(jù)塊,所述第一數(shù)據(jù) 塊和第二數(shù)據(jù)塊的編號(hào)都與所述Y字節(jié)長(zhǎng)度數(shù)據(jù)塊的編號(hào)相同; 將所述第一數(shù)據(jù)塊作為固件數(shù)據(jù)對(duì)設(shè)備進(jìn)行固件升級(jí);
所述升級(jí)計(jì)數(shù)器值加1,并判斷加1后的升級(jí)計(jì)數(shù)器值是否等于所述將升級(jí)數(shù)據(jù)拆分得 到的數(shù)據(jù)塊的個(gè)數(shù),如果是,升級(jí)完成,結(jié)束;否則,按照與升級(jí)編號(hào)為初始值的數(shù)據(jù)塊相 同的方法繼續(xù)升級(jí),直到升級(jí)計(jì)數(shù)器值為所述將升級(jí)數(shù)據(jù)按X字節(jié)長(zhǎng)度拆分得到的數(shù)據(jù)塊的 個(gè)數(shù)。
其中,對(duì)編號(hào)與所述升級(jí)計(jì)數(shù)器值相同的X字節(jié)長(zhǎng)度數(shù)據(jù)塊按預(yù)設(shè)的算法進(jìn)行運(yùn)算,具 體包括
用DES、 3DES、 RC4、 AES、 RSA、 ECC或TEA算法將編號(hào)和所述升級(jí)計(jì)數(shù)器值相同 的X字節(jié)長(zhǎng)度固件升級(jí)數(shù)據(jù)塊進(jìn)行運(yùn)算。
一種固件升級(jí)數(shù)據(jù)處理裝置,所述裝置包括接收模塊、驗(yàn)證模塊和升級(jí)模塊; 所述接收模塊用于接收升級(jí)軟件發(fā)送的升級(jí)數(shù)據(jù);
所述驗(yàn)證模塊用于將所述接收模塊接收到的升級(jí)數(shù)據(jù)按預(yù)設(shè)的長(zhǎng)度拆分為多個(gè)數(shù)據(jù)塊, 并按預(yù)設(shè)的算法驗(yàn)證所述多個(gè)數(shù)據(jù)塊中指定個(gè)數(shù)的數(shù)據(jù)塊是否均有效,如果是,所述升級(jí)模 塊從所述升級(jí)數(shù)據(jù)中提取出固件數(shù)據(jù),用所述固件數(shù)據(jù)對(duì)設(shè)備進(jìn)行固件升級(jí);否則,發(fā)出升 級(jí)數(shù)據(jù)錯(cuò)誤信息,結(jié)束。
其中,所述接收模塊具體包括
接收單元,用于接收二進(jìn)制bin文件;
獲取單元,用于從所述接收單元接收到的二進(jìn)制bin文件中獲取升級(jí)數(shù)據(jù)。
其中,所述驗(yàn)證模塊具體包括
第一拆分單元,用于將接收模塊收到的升級(jí)數(shù)據(jù)以X字節(jié)長(zhǎng)度進(jìn)行拆分,得到多個(gè)數(shù)據(jù) 塊,并對(duì)所述多個(gè)數(shù)據(jù)塊依次從預(yù)設(shè)的初始值開始編號(hào);
第一判斷單元,用于判斷所述第一拆分單元得到的編號(hào)的數(shù)據(jù)塊中,編號(hào)最大的數(shù)據(jù)塊
是否滿足X字節(jié)長(zhǎng)度,如果否,發(fā)送升級(jí)數(shù)據(jù)錯(cuò)誤信息,結(jié)束;如果是,將驗(yàn)證計(jì)數(shù)器值設(shè)
為所述初始值;
發(fā)送單元,用于發(fā)送所述第一判斷單元和所述驗(yàn)證單元得到升級(jí)數(shù)據(jù)錯(cuò)誤信息和所述第 二判斷單元的得到的升級(jí)數(shù)據(jù)有效的信息;
指定單元,用于在多個(gè)數(shù)據(jù)塊中指定要驗(yàn)證的數(shù)據(jù)塊的個(gè)數(shù);
運(yùn)算單元,用于在所述第一拆分單元得到的多個(gè)數(shù)據(jù)塊中,對(duì)編號(hào)與所述驗(yàn)證計(jì)數(shù)器值 相同的X字節(jié)長(zhǎng)度數(shù)據(jù)塊進(jìn)行運(yùn)算,得到Y(jié)字節(jié)長(zhǎng)度數(shù)據(jù)塊,所述Y字節(jié)長(zhǎng)度數(shù)據(jù)塊的編 號(hào)與所述X字節(jié)長(zhǎng)度數(shù)據(jù)塊的編號(hào)相同;
第二拆分單元,用于將所述運(yùn)算單元得到的Y字節(jié)長(zhǎng)度數(shù)據(jù)塊按預(yù)設(shè)的長(zhǎng)度進(jìn)行拆分, 得到第一數(shù)據(jù)塊和第二數(shù)據(jù)塊,所述第一數(shù)據(jù)塊和第二數(shù)據(jù)塊的編號(hào)都與所述Y字節(jié)長(zhǎng)度數(shù) 據(jù)塊的編號(hào)相同;
驗(yàn)證單元,用于對(duì)所述第二拆分單元得到的第一數(shù)據(jù)塊進(jìn)行處理,并驗(yàn)證處理過的第一數(shù)據(jù)塊與所述第二數(shù)據(jù)塊是否相等,如果否,發(fā)送升級(jí)數(shù)據(jù)錯(cuò)誤信息,結(jié)束;如果是,所述 驗(yàn)證計(jì)數(shù)器值加1;
第二判斷單元,用于判斷所述驗(yàn)證單元得到的加1后的驗(yàn)證計(jì)數(shù)器值是否等于所述指定單元指定要驗(yàn)證的數(shù)據(jù)塊的個(gè)數(shù),如果是,發(fā)送升級(jí)數(shù)據(jù)有效的信息;否則,按照與驗(yàn)證編 號(hào)為初始值的數(shù)據(jù)塊相同的方法對(duì)所述指定單元指定要驗(yàn)證的數(shù)據(jù)塊繼續(xù)驗(yàn)證,直到驗(yàn)證計(jì) 數(shù)器值為所述指定單元指定要驗(yàn)證的數(shù)據(jù)塊的個(gè)數(shù)。
其中,所述運(yùn)算單元對(duì)編號(hào)與所述驗(yàn)證計(jì)數(shù)器值相同的X字節(jié)長(zhǎng)度數(shù)據(jù)塊,釆用DES、 3DES、 RC4、 AES、 RSA、 ECC或TEA算法進(jìn)行運(yùn)算。
其中,所述驗(yàn)證單元對(duì)所述第二拆分單元得到的第一數(shù)據(jù)塊采用求或、求和或加密的方法進(jìn)行處理。
其中,所述升級(jí)模塊具體包括
第一拆分單元,用于將所述接收模塊接收到的升級(jí)數(shù)據(jù)以X字節(jié)長(zhǎng)度進(jìn)行拆分,得到多個(gè)數(shù)據(jù)塊,并對(duì)所述多個(gè)數(shù)據(jù)塊依次從預(yù)設(shè)的初始值開始編號(hào);設(shè)置單元,用于將升級(jí)計(jì)數(shù)器值設(shè)為所述初始值;
運(yùn)算單元,用于對(duì)所述第一拆分單元得到的多個(gè)數(shù)據(jù)塊中,對(duì)編號(hào)與所述升級(jí)計(jì)數(shù)器值 相同的X字節(jié)長(zhǎng)度數(shù)據(jù)塊按預(yù)設(shè)的算法進(jìn)行運(yùn)算,得到Y(jié)字節(jié)長(zhǎng)度數(shù)據(jù)塊,所述Y字節(jié)長(zhǎng) 度數(shù)據(jù)塊的編號(hào)與所述X字節(jié)長(zhǎng)度數(shù)據(jù)塊的編號(hào)相同;
第二拆分單元,用于對(duì)所述運(yùn)算單元得到的Y字節(jié)長(zhǎng)度數(shù)據(jù)塊按預(yù)設(shè)的長(zhǎng)度進(jìn)行拆分,得到第一數(shù)據(jù)塊和第二數(shù)據(jù)塊,所述第一數(shù)據(jù)塊和第二數(shù)據(jù)塊的編號(hào)都與所述Y字節(jié)長(zhǎng)度數(shù) 據(jù)塊的編號(hào)相同;
升級(jí)單元,用于將所述第二拆分單元得到的第一數(shù)據(jù)塊作為固件數(shù)據(jù)對(duì)設(shè)備進(jìn)行固件升級(jí),并將升級(jí)計(jì)數(shù)器值加l; 判斷單元,用于判斷所述升級(jí)單元得到的加1后的升級(jí)計(jì)數(shù)器值是否等于所述第一拆分 單元拆分得到的數(shù)據(jù)塊的個(gè)數(shù),如果是,則升級(jí)完成,結(jié)束;否則,按照與升級(jí)編號(hào)為初始 值的數(shù)據(jù)塊相同的方法繼續(xù)升級(jí),直到升級(jí)計(jì)數(shù)器值為所述第一拆分單元拆分得到的數(shù)據(jù)塊 的個(gè)數(shù)。
其中,所述運(yùn)算單元對(duì)編號(hào)與所述升級(jí)計(jì)數(shù)器值相同的X字節(jié)長(zhǎng)度數(shù)據(jù)塊,采用DES、 3DES、 RC4、 AES、 RSA、 ECC或TEA算法進(jìn)行運(yùn)算。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果在于通過將升級(jí)軟件發(fā)送的升級(jí)數(shù)據(jù)拆分,驗(yàn)證 該升級(jí)數(shù)據(jù)正確后,提取固件數(shù)據(jù),用該固件數(shù)據(jù)對(duì)硬件設(shè)備進(jìn)行固件升級(jí),確保了固件數(shù) 據(jù)的唯一性,大大提高了硬件設(shè)備的安全性。
圖1是本發(fā)明實(shí)施例1提供的一種固件升級(jí)數(shù)據(jù)處理方法流程圖2是本發(fā)明實(shí)施例1提供的一種對(duì)固件升級(jí)數(shù)據(jù)進(jìn)行驗(yàn)證的方法流程圖3是本發(fā)明實(shí)施例1提供的一種應(yīng)用固件升級(jí)數(shù)據(jù)對(duì)固件升級(jí)的方法流程圖4是本發(fā)明實(shí)施例2提供的一種固件升級(jí)數(shù)據(jù)處理系統(tǒng)結(jié)構(gòu)圖5是本發(fā)明實(shí)施例2提供的一種對(duì)固件升級(jí)數(shù)據(jù)進(jìn)行驗(yàn)證的結(jié)構(gòu)圖6是本發(fā)明實(shí)施例2提供的一種應(yīng)用固件升級(jí)數(shù)據(jù)對(duì)固件升級(jí)的結(jié)構(gòu)圖。
具體實(shí)施例方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明實(shí)施方式作進(jìn) 一步地詳細(xì)描述。 實(shí)施例1
參見圖1,本發(fā)明實(shí)施例提供了一種固件升級(jí)數(shù)據(jù)處理方法,應(yīng)用于硬件設(shè)備的升級(jí), 硬件設(shè)備可以是讀卡器、mp3、 mp4等內(nèi)有cpu的設(shè)備,該方法具體包括 步驟101:接收升級(jí)軟件發(fā)送的升級(jí)數(shù)據(jù)。
步驟102:將接收到的升級(jí)數(shù)據(jù)按照預(yù)設(shè)的長(zhǎng)度拆分為多個(gè)數(shù)據(jù)塊,并按預(yù)設(shè)的算法驗(yàn)
證該多個(gè)數(shù)據(jù)塊中指定個(gè)數(shù)的數(shù)據(jù)塊是否均有效,如果是,執(zhí)行步驟103,否則,執(zhí)行步驟 104。
步驟103:從接收到的升級(jí)數(shù)據(jù)中提取出用于升級(jí)的固件數(shù)據(jù),用該固件數(shù)據(jù)對(duì)設(shè)備進(jìn) 行固件升級(jí)。
步驟104:發(fā)出升級(jí)數(shù)據(jù)錯(cuò)誤信息,結(jié)束。
其中,接收升級(jí)軟件發(fā)送的升級(jí)數(shù)據(jù),具體包括
接收二進(jìn)制bin文件,從該二進(jìn)制bin文件中獲取升級(jí)數(shù)據(jù)。
其中,將升級(jí)數(shù)據(jù)按照預(yù)設(shè)的長(zhǎng)度拆分為多個(gè)數(shù)據(jù)塊,并按預(yù)設(shè)的算法驗(yàn)證所述多個(gè)數(shù) 據(jù)塊中指定個(gè)數(shù)的數(shù)據(jù)塊是否均有效,參見圖2,該驗(yàn)證過程具體包括
歩驟201:將接收到的升級(jí)數(shù)據(jù)以X字節(jié)長(zhǎng)度進(jìn)行拆分,得到多個(gè)數(shù)據(jù)塊,并對(duì)得到的 多個(gè)數(shù)據(jù)塊依次從預(yù)設(shè)的初始值開始編號(hào)。
其中,升級(jí)數(shù)據(jù)可以是以用戶ID作為密鑰,通過DES、 3DES、 RC4、 AES、 RSA、 ECC 或TEA等算法加密的。
其中,X字節(jié)可以取16字節(jié)、32字節(jié)、64字節(jié)等,優(yōu)選地,本實(shí)施例中,X字節(jié)取64字節(jié)。
本實(shí)施例中,預(yù)設(shè)初始值為O,對(duì)拆分得到的數(shù)據(jù)塊可以按照O, 1, 2, 3......進(jìn)行編號(hào)。
步驟202:判斷經(jīng)過編號(hào)的多個(gè)數(shù)據(jù)塊中,編號(hào)最大的數(shù)據(jù)塊是否滿足X字節(jié)長(zhǎng)度,如 果否,執(zhí)行步驟203;如果是,執(zhí)行步驟204。 步驟203:發(fā)送升級(jí)數(shù)據(jù)錯(cuò)誤信息,結(jié)束。
步驟204:在多個(gè)數(shù)據(jù)塊中指定要驗(yàn)證的數(shù)據(jù)塊的個(gè)數(shù),并將驗(yàn)證計(jì)數(shù)器值設(shè)為與步驟 201中相同的初始值。
其中,由于將接收的升級(jí)數(shù)據(jù)進(jìn)行拆分后得到的數(shù)據(jù)塊很多,所以只需驗(yàn)證指定個(gè)數(shù)的 數(shù)據(jù)塊,若該指定個(gè)數(shù)的數(shù)據(jù)塊均有效,則認(rèn)為拆分得到的多個(gè)數(shù)據(jù)塊均有效。 本實(shí)施例中,將驗(yàn)證計(jì)數(shù)器初始值設(shè)為0。
步驟205:在指定要驗(yàn)證的數(shù)據(jù)塊中,對(duì)編號(hào)與驗(yàn)證計(jì)數(shù)器值相同的X字節(jié)長(zhǎng)度數(shù)據(jù)塊 按預(yù)設(shè)的算法進(jìn)行運(yùn)算,得到Y(jié)字節(jié)長(zhǎng)度數(shù)據(jù)塊,Y字節(jié)長(zhǎng)度數(shù)據(jù)塊的編號(hào)與X字節(jié)長(zhǎng)度數(shù) 據(jù)塊的編號(hào)相同。
此處以編號(hào)為O的數(shù)據(jù)塊為例進(jìn)行說明,驗(yàn)證計(jì)數(shù)器初始值設(shè)為O,則對(duì)編號(hào)為O的數(shù) 據(jù)塊進(jìn)行運(yùn)算,得到編號(hào)為0的Y字節(jié)長(zhǎng)度數(shù)據(jù)塊。
其中,預(yù)設(shè)的算法可以是解密算法,該解密算法與升級(jí)數(shù)據(jù)的加密算法相同,可以是 TEA、 DES、 3DES、 RC4、 AES、 RSA、 ECC等算法,密鑰為用戶ID,這樣,加密后的升級(jí) 數(shù)據(jù)能被待升級(jí)硬件設(shè)備解密且唯一匹配。對(duì)數(shù)據(jù)塊進(jìn)行運(yùn)算后,其長(zhǎng)度變化與否,與使用 的算法有關(guān)。本發(fā)明實(shí)施例中,所使用的算法具體為上述的3DES算法,則長(zhǎng)度不變,得到 Y等于X,即X、 Y都是64字節(jié)。
步驟206:將Y字節(jié)長(zhǎng)度的數(shù)據(jù)塊按預(yù)設(shè)的長(zhǎng)度進(jìn)行拆分,得到第一數(shù)據(jù)塊和第二數(shù)據(jù) 塊,第一數(shù)據(jù)塊和第二數(shù)據(jù)塊的編號(hào)都與Y字節(jié)長(zhǎng)度數(shù)據(jù)塊的編號(hào)相同。
仍以編號(hào)為0的數(shù)據(jù)塊為例進(jìn)行說明,將編號(hào)為0的64字節(jié)長(zhǎng)度數(shù)據(jù)塊按預(yù)設(shè)的長(zhǎng)度 進(jìn)行拆分,得到第一數(shù)據(jù)塊和第二數(shù)據(jù)塊,第一數(shù)據(jù)塊的編號(hào)為0、字節(jié)長(zhǎng)度為m=62,第二 數(shù)據(jù)塊的編號(hào)為0、字節(jié)長(zhǎng)度為n=2。
其中,m、 n還可以取其它數(shù)值進(jìn)行拆分,只要m與n的和為Y。
步驟207:對(duì)拆分得到的第一數(shù)據(jù)塊進(jìn)行處理,驗(yàn)證處理過的第一數(shù)據(jù)塊與第二數(shù)據(jù)塊 是否相等,如果否,執(zhí)行步驟208,否則,執(zhí)行步驟209。
其中,對(duì)第一數(shù)據(jù)塊進(jìn)行處理的方法可以是求或、求和或加密,求或具體為求邏輯和, 求和具體為求數(shù)學(xué)和,包括單字節(jié)求和與雙字節(jié)求和。
以編號(hào)為0的第一數(shù)據(jù)塊和第二數(shù)據(jù)塊為例進(jìn)行說明如何驗(yàn)證,編號(hào)為0的第一數(shù)據(jù)塊 的字節(jié)長(zhǎng)度為62,可以采用單字節(jié)求和的方法對(duì)第一數(shù)據(jù)塊進(jìn)行處理,62字節(jié)數(shù)據(jù)依次為 0x01、 0x02、 0x03…0x3e,則62字節(jié)單字節(jié)的數(shù)學(xué)和2字節(jié)結(jié)果為0x07、 OxAl;然后驗(yàn)證 得到的0x07、 OxAl與編號(hào)為O、字節(jié)長(zhǎng)度為2的第二數(shù)據(jù)塊是否相等。
也可以采用雙字節(jié)求和的方法對(duì)第一數(shù)據(jù)塊進(jìn)行處理,例如,62字節(jié)數(shù)據(jù)依次為0x01、 0x01、 0x01、 0x02、 0x01、 0x03、 0x01、 0x04、 ...0x01、 OxlF,則62字節(jié)雙字節(jié)的數(shù)學(xué)和2 字節(jié)結(jié)果=(^20、 OxFO;然后驗(yàn)證得到的0x20、 OxFO與編號(hào)為O、字節(jié)長(zhǎng)度為2的第二數(shù)據(jù) 塊是否相等。
步驟208:發(fā)送升級(jí)數(shù)據(jù)錯(cuò)誤信息,結(jié)束。
步驟209:將驗(yàn)證計(jì)數(shù)器值加l。
步驟210:判斷加1后的驗(yàn)證計(jì)數(shù)器值是否等于在多個(gè)數(shù)據(jù)塊中指定的要驗(yàn)證的數(shù)據(jù)塊 的個(gè)數(shù),如果是,執(zhí)行步驟211;否則,返回步驟205,按照與驗(yàn)證編號(hào)為初始值的數(shù)據(jù)塊相 同的方法對(duì)指定要驗(yàn)證的數(shù)據(jù)塊繼續(xù)驗(yàn)證,直到驗(yàn)證計(jì)數(shù)器值為所述指定要驗(yàn)證的數(shù)據(jù)塊的 個(gè)數(shù)。
步驟211:發(fā)送升級(jí)數(shù)據(jù)有效的信息。
其中,從接收到的升級(jí)數(shù)據(jù)中提取出用于升級(jí)的固件數(shù)據(jù),用該固件數(shù)據(jù)對(duì)設(shè)備進(jìn)行固
件升級(jí),參見圖3,該過程具體包括
步驟301:收到升級(jí)數(shù)據(jù)有效地消息后,將收到的升級(jí)數(shù)據(jù)以和驗(yàn)證過程中相同的X字
節(jié)長(zhǎng)度進(jìn)行拆分,得到多個(gè)數(shù)據(jù)塊,并對(duì)得到的多個(gè)數(shù)據(jù)塊依次從預(yù)設(shè)的初始值開始編號(hào)。
其中,升級(jí)數(shù)據(jù)可以是以用戶ID作為密鑰,通過DES、 3DES、 RC4、 AES、 RSA、 ECC 或TEA等算法加密得到的。
其中,X字節(jié)可以取16字節(jié)、32字節(jié)、64字節(jié)等,優(yōu)選地,本實(shí)施例中,X字節(jié)取64字節(jié)。
本實(shí)施例中,預(yù)設(shè)初始值為O,對(duì)拆分得到的數(shù)據(jù)塊可以按照O, 1, 2, 3......進(jìn)行編號(hào)。
歩驟302:將升級(jí)計(jì)數(shù)器值設(shè)為步驟301中相同的初始值。 本實(shí)施例中,將升級(jí)計(jì)數(shù)器初始值設(shè)為0。
步驟303:在拆分得到的多個(gè)數(shù)據(jù)塊中,將編號(hào)與升級(jí)計(jì)數(shù)器值相同的X字節(jié)長(zhǎng)度數(shù)據(jù) 塊按預(yù)設(shè)的算法進(jìn)行運(yùn)算,得到Y(jié)字節(jié)長(zhǎng)度數(shù)據(jù)塊,Y字節(jié)長(zhǎng)度數(shù)據(jù)塊的編號(hào)與X字節(jié)長(zhǎng)度 數(shù)據(jù)塊的編號(hào)相同。
此處以編號(hào)為O的數(shù)據(jù)塊為例進(jìn)行說明,升級(jí)計(jì)數(shù)器初始值設(shè)為O,則對(duì)編號(hào)為O的數(shù) 據(jù)塊進(jìn)行運(yùn)算,得到編號(hào)為O的Y字節(jié)長(zhǎng)度數(shù)據(jù)塊。
其中,預(yù)設(shè)的算法可以是解密算法,該解密算法與升級(jí)數(shù)據(jù)的加密算法相同,可以是 TEA、 DES、 3DES、 RC4、 AES、 RSA、 ECC等算法,密鑰為用戶ID,這樣加密后的升級(jí)數(shù) 據(jù)能被待升級(jí)設(shè)備解密且唯一匹配。對(duì)數(shù)據(jù)塊進(jìn)行運(yùn)算后,其長(zhǎng)度變化與否,與使用的算法 有關(guān)。本實(shí)施例中,對(duì)數(shù)據(jù)塊采用3DES算法,解密后長(zhǎng)度不變,得到Y(jié)等于X,即X、 Y 都是64字節(jié)。
步驟304:將Y字節(jié)長(zhǎng)度數(shù)據(jù)塊按預(yù)設(shè)的長(zhǎng)度進(jìn)行拆分,得到第一數(shù)據(jù)塊和第二數(shù)據(jù)塊, 所述第一數(shù)據(jù)塊和第二數(shù)據(jù)塊的編號(hào)都與所述Y字節(jié)長(zhǎng)度數(shù)據(jù)塊的編號(hào)相同。
仍以編號(hào)為0的數(shù)據(jù)塊為例進(jìn)行說明,將編號(hào)為0的64字節(jié)長(zhǎng)度數(shù)據(jù)塊按預(yù)設(shè)的長(zhǎng)度 進(jìn)行拆分,得到第一數(shù)據(jù)塊和第二數(shù)據(jù)塊,第一數(shù)據(jù)塊的編號(hào)為0、字節(jié)長(zhǎng)度為m=62,第二 數(shù)據(jù)塊的編號(hào)為0、字節(jié)長(zhǎng)度為n-2。
其中,m、 n還可以取其它數(shù)值進(jìn)行拆分,只要m與n的和為Y。
步驟305:用上述第一數(shù)據(jù)塊作為固件數(shù)據(jù)對(duì)設(shè)備進(jìn)行固件升級(jí)。
步驟306:將升級(jí)計(jì)數(shù)器值加l。
步驟307:判斷加1后的升級(jí)計(jì)數(shù)器值是否等于步驟301中拆分得到的數(shù)據(jù)塊的個(gè)數(shù), 如果是,執(zhí)行步驟308,否則,返回步驟303,按照與升級(jí)編號(hào)為初始值的數(shù)據(jù)塊相同的方法 繼續(xù)升級(jí),直到升級(jí)計(jì)數(shù)器值為所述將升級(jí)數(shù)據(jù)按X字節(jié)長(zhǎng)度拆分得到的數(shù)據(jù)塊的個(gè)數(shù)。
步驟308:升級(jí)完成,結(jié)束。
其中,可以升級(jí)硬件設(shè)備中的所有固件,也可以有針對(duì)性的根據(jù)需要升級(jí)硬件設(shè)備中的
部分固件,例如,當(dāng)上述升級(jí)數(shù)據(jù)用于升級(jí)硬件設(shè)備的主控程序時(shí),該硬件設(shè)備可以利用獲 取的升級(jí)數(shù)據(jù)中的固件數(shù)據(jù)進(jìn)行相應(yīng)升級(jí)。
實(shí)際應(yīng)用中,還可以由主機(jī)接收、驗(yàn)證固件升級(jí)數(shù)據(jù),并在驗(yàn)證通過后發(fā)送給硬件設(shè)備 進(jìn)行固件升級(jí)。
本發(fā)明實(shí)施例的有益效果在于通過將升級(jí)軟件發(fā)送的升級(jí)數(shù)據(jù)拆分,在驗(yàn)證拆分后的 升級(jí)數(shù)據(jù)塊正確后,提取出固件數(shù)據(jù),用該固件數(shù)據(jù)對(duì)設(shè)備進(jìn)行固件升級(jí),這樣,確保了固 件數(shù)據(jù)的唯一性,大大提高了硬件設(shè)備的安全性。本發(fā)明可以升級(jí)硬件設(shè)備中的所有固件, 也可以有針對(duì)性的根據(jù)實(shí)際需要,升級(jí)硬件設(shè)備中的部分固件。
實(shí)施例2
參見圖4,本發(fā)明實(shí)施例提供了一種固件升級(jí)數(shù)據(jù)處理裝置,應(yīng)用于硬件設(shè)備的升級(jí), 硬件設(shè)備可以是讀卡器、mp3、 mp4等內(nèi)有cpu的設(shè)備,該裝置包括接收模塊200、驗(yàn)證模 塊300、升級(jí)模塊400。
接收模塊200用于接收升級(jí)軟件發(fā)送的升級(jí)數(shù)據(jù)。
驗(yàn)證模塊300用于將接收模塊200接收到的升級(jí)數(shù)據(jù)按照預(yù)設(shè)的長(zhǎng)度拆分為多個(gè)數(shù)據(jù)塊, 并驗(yàn)證多個(gè)數(shù)據(jù)塊中指定個(gè)數(shù)的數(shù)據(jù)塊是否均有效;如果是,向升級(jí)模塊400發(fā)送升級(jí)數(shù)有 效的信息,升級(jí)模塊400收到驗(yàn)證模塊300發(fā)送的升級(jí)數(shù)據(jù)有效的信息后,從升級(jí)數(shù)據(jù)中提 取固件數(shù)據(jù),用固件數(shù)據(jù)對(duì)設(shè)備進(jìn)行固件升級(jí);否則,發(fā)出升級(jí)數(shù)據(jù)錯(cuò)誤信息,結(jié)束。
其中,接收模塊200具體包括;
接收單元,用于接收二進(jìn)制bin文件。
獲取單元,用于從接收單元接收的二進(jìn)制bin文件中獲取升級(jí)數(shù)據(jù)。 參見圖5,驗(yàn)證模塊300具體包括
第一拆分單元301,用于將接收模塊200接收到的升級(jí)數(shù)據(jù)以X字節(jié)長(zhǎng)度進(jìn)行拆分,得 到多個(gè)數(shù)據(jù)塊,并對(duì)該多個(gè)數(shù)據(jù)塊依次從預(yù)設(shè)的初始值開始編號(hào)。
其中,升級(jí)數(shù)據(jù)可以是以用戶ID作為密鑰,通過DES、 3DES、 RC4、 AES、 RSA、 ECC 或TEA等算法加密得到的。
其中,X字節(jié)可以取16字節(jié)、32字節(jié)、64字節(jié)等,優(yōu)選地,本實(shí)施例中,X字節(jié)取64 字節(jié)。
本實(shí)施例中,預(yù)設(shè)初始值為O,對(duì)拆分得到的數(shù)據(jù)塊可以按照O, 1, 2, 3......進(jìn)行編號(hào)。
第一判斷單元302,用于判斷經(jīng)過第一拆分單元301拆分的數(shù)據(jù)塊中,編號(hào)最大的數(shù)據(jù)
塊是否滿足X字節(jié)長(zhǎng)度,如果否,發(fā)送升級(jí)數(shù)據(jù)錯(cuò)誤信息,結(jié)束;如果是,將驗(yàn)證計(jì)數(shù)器值 設(shè)為與第一拆分單元301中相同的初始值。
本實(shí)施例中,將驗(yàn)證計(jì)數(shù)器初始值設(shè)為0。
發(fā)送單元303,用于發(fā)送第一判斷單元302和驗(yàn)證單元307得到升級(jí)數(shù)據(jù)錯(cuò)誤信息和第 二判斷單元308得到的升級(jí)數(shù)據(jù)有效的信息。
指定單元304,用于在多個(gè)數(shù)據(jù)塊中指定要驗(yàn)證的數(shù)據(jù)塊的個(gè)數(shù)。
其中,由于拆分得到的數(shù)據(jù)塊很多,所以只需驗(yàn)證指定個(gè)數(shù)的數(shù)據(jù)塊,若該指定個(gè)數(shù)的 數(shù)據(jù)塊均有效,則認(rèn)為該多個(gè)數(shù)據(jù)塊均有效。
運(yùn)算單元305,用于在第一拆分單元301得到的多個(gè)數(shù)據(jù)塊中,對(duì)編號(hào)與驗(yàn)證計(jì)數(shù)器值 相同的X字節(jié)長(zhǎng)度數(shù)據(jù)塊按照預(yù)設(shè)的算法進(jìn)行運(yùn)算,得到Y(jié)字節(jié)長(zhǎng)度數(shù)據(jù)塊,第一數(shù)據(jù)塊和 第二數(shù)據(jù)塊的編號(hào)都與Y字節(jié)長(zhǎng)度數(shù)據(jù)塊的編號(hào)相同。
此處以編號(hào)為O的數(shù)據(jù)塊為例進(jìn)行說明,驗(yàn)證計(jì)數(shù)器初始值設(shè)為O,則對(duì)編號(hào)為O的數(shù) 據(jù)塊進(jìn)行運(yùn)算,得到編號(hào)為0的Y字節(jié)長(zhǎng)度數(shù)據(jù)塊。
其中,預(yù)設(shè)的算法可以是解密算法,該解密算法與原始升級(jí)數(shù)據(jù)的加密算法相同,可以 是TEA、 DES、 3DES、 RC4、 AES、 RSA、 ECC等算法,密鑰為用戶ID,這樣加密后的升 級(jí)數(shù)據(jù)才能被待升級(jí)硬件設(shè)備解密且唯一匹配。對(duì)數(shù)據(jù)塊進(jìn)行運(yùn)算后,其長(zhǎng)度變化與否,與 使用的算法有關(guān)。本發(fā)明實(shí)施例中,對(duì)數(shù)據(jù)塊采用3DES算法,解密后長(zhǎng)度不變,得到Y(jié)等 于X,即X、 Y都是64字節(jié)。
第二拆分單元306,用于將運(yùn)算單元305得到的Y字節(jié)長(zhǎng)度數(shù)據(jù)塊進(jìn)行拆分,得到第一 數(shù)據(jù)塊和第二數(shù)據(jù)塊,第一數(shù)據(jù)塊和第二數(shù)據(jù)塊的編號(hào)都與Y字節(jié)長(zhǎng)度數(shù)據(jù)塊的編號(hào)相同。
仍以編號(hào)為0的數(shù)據(jù)塊為例進(jìn)行說明,將編號(hào)為0的64字節(jié)長(zhǎng)度數(shù)據(jù)塊按預(yù)設(shè)的長(zhǎng)度 進(jìn)行拆分,得到第一數(shù)據(jù)塊和第二數(shù)據(jù)塊,第一數(shù)據(jù)塊的編號(hào)為0、字節(jié)長(zhǎng)度為m=62,第二 數(shù)據(jù)塊的編號(hào)為0、字節(jié)長(zhǎng)度為n=2。
其中,m、 n還可以取其它數(shù)值進(jìn)行拆分,只要m與n的和為Y。
驗(yàn)證單元307,用于對(duì)第二拆分單元306得到的第一數(shù)據(jù)塊進(jìn)行處理,并驗(yàn)證處理過的 第一數(shù)據(jù)塊與第二拆分單元306拆分得到的第二數(shù)據(jù)塊是否相等,如果否,發(fā)送升級(jí)數(shù)據(jù)錯(cuò) 誤信息,結(jié)束;否則,將驗(yàn)證計(jì)數(shù)器值加l。
其中,對(duì)第一數(shù)據(jù)塊進(jìn)行處理的方法可以是求或、求和或加密,求或具體為求邏輯和, 求和具體為求數(shù)學(xué)和,包括單字節(jié)求和與雙字節(jié)求和。
以編號(hào)為0的第一數(shù)據(jù)塊和第二數(shù)據(jù)塊為例進(jìn)行說明如何驗(yàn)證,編號(hào)為0的第一數(shù)據(jù)塊
的字節(jié)長(zhǎng)度為62??梢圆捎脝巫止?jié)求和的方法對(duì)第一數(shù)據(jù)塊進(jìn)行處理,62字節(jié)數(shù)據(jù)依次為 0x01、 0x02、 0x03.,.0x3e,則62字節(jié)單字節(jié)的數(shù)學(xué)和2字節(jié)結(jié)果為0x07、 OxAl;然后驗(yàn)證 得到的0x07、 OxAl與編號(hào)為0、字節(jié)長(zhǎng)度為2的第二數(shù)據(jù)塊是否相等。
也可以采用雙字節(jié)求和的方法對(duì)第一數(shù)據(jù)塊進(jìn)行處理,例如,62字節(jié)數(shù)據(jù)依次為0x01、 0x01, 0x01、 0x02, 0x01、 0x03, 0x01、 0x04, ...0x01、 OxlF,則62字節(jié)雙字節(jié)的數(shù)學(xué)和2 字節(jié)結(jié)果^0x20、 OxFO;然后驗(yàn)證得到的0x20、 OxFO與編號(hào)為0、字節(jié)長(zhǎng)度為2的第二數(shù)據(jù) 塊是否相等。
第二判斷單元308,用于判斷驗(yàn)證單元307得到的加1后的驗(yàn)證計(jì)數(shù)器值是否等于指定 單元304指定的要驗(yàn)證的數(shù)據(jù)塊的個(gè)數(shù),如果是,則發(fā)送升級(jí)數(shù)據(jù)有效的信息;否則,按照 與驗(yàn)證編號(hào)為初始值的數(shù)據(jù)塊相同的方法對(duì)所述指定單元304指定要驗(yàn)證的數(shù)據(jù)塊繼續(xù)驗(yàn) 證,直到驗(yàn)證計(jì)數(shù)器值為指定單元304指定要驗(yàn)證的數(shù)據(jù)塊的個(gè)數(shù)。
其中,參見圖6,升級(jí)模塊400具體包括
接收單元401,用于接收驗(yàn)證模塊300發(fā)送的升級(jí)數(shù)據(jù)有效的消息。
第一拆分單元402,用于將接收單元401收到的升級(jí)數(shù)據(jù)以X字節(jié)長(zhǎng)度進(jìn)行拆分,得到 多個(gè)數(shù)據(jù)塊,并對(duì)該多個(gè)數(shù)據(jù)塊依次從預(yù)設(shè)的初始值開始編號(hào)。
其中,升級(jí)數(shù)據(jù)可以是以用戶ID作為密鑰,通過DES、 3DES、 RC4、 AES、 RSA、 ECC 或TEA等算法加密得到的。
其中,X字節(jié)可以取16字節(jié)、32字節(jié)、64字節(jié)等,優(yōu)選地,本實(shí)施例中,X字節(jié)取64 字節(jié)。
本實(shí)施例中,預(yù)設(shè)初始值為O,對(duì)拆分得到的數(shù)據(jù)塊可以按照O, 1, 2, 3......進(jìn)行編號(hào)。
設(shè)置單元403,用于將升級(jí)計(jì)數(shù)器值設(shè)為與第一拆分單元402中相同的初始值。 本實(shí)施例中,將升級(jí)計(jì)數(shù)器初始值也設(shè)置為0。
運(yùn)算單元404,用于在第一拆分單元402得到的多個(gè)數(shù)據(jù)塊中,對(duì)編號(hào)與升級(jí)計(jì)數(shù)器值 相同的X字節(jié)長(zhǎng)度數(shù)據(jù)塊按照預(yù)設(shè)的算法進(jìn)行運(yùn)算,得到Y(jié)字節(jié)長(zhǎng)度數(shù)據(jù)塊,Y字節(jié)長(zhǎng)度數(shù) 據(jù)塊的編號(hào)與X字節(jié)長(zhǎng)度數(shù)據(jù)塊的編號(hào)相同。
此處以編號(hào)為O的數(shù)據(jù)塊為例進(jìn)行說明,升級(jí)計(jì)數(shù)器初始值設(shè)為O,則對(duì)編號(hào)為O的數(shù) 據(jù)塊進(jìn)行運(yùn)算,得到編號(hào)為0的Y字節(jié)長(zhǎng)度數(shù)據(jù)塊。
其中,預(yù)設(shè)的算法可以是解密算法,該解密算法與原始升級(jí)數(shù)據(jù)的加密算法相同,可以 是TEA、 DES、 3DES、 RC4、 AES、 RSA、 ECC等算法,密鑰為用戶ID,這樣加密后的升 級(jí)數(shù)據(jù)才能被待升級(jí)設(shè)備解密且唯一匹配。對(duì)數(shù)據(jù)塊進(jìn)行運(yùn)算后,其長(zhǎng)度變化與否,與使用
的算法有關(guān)。本實(shí)施例中,對(duì)數(shù)據(jù)塊采用3DES算法,解密后長(zhǎng)度不變,得到Y(jié)等于X,即 X、 Y都是64字節(jié)。
第二拆分單元405,用于將運(yùn)算單元404得到的Y字節(jié)長(zhǎng)度的數(shù)據(jù)塊按預(yù)設(shè)的長(zhǎng)度進(jìn)行 拆分,得到第一數(shù)據(jù)塊和第二數(shù)據(jù)塊,第一數(shù)據(jù)塊和第二數(shù)據(jù)塊的編號(hào)都與Y字節(jié)長(zhǎng)度的數(shù) 據(jù)塊的編號(hào)相同。
仍以編號(hào)為0的數(shù)據(jù)塊為例進(jìn)行說明,將編號(hào)為0的64字節(jié)長(zhǎng)度數(shù)據(jù)塊按預(yù)設(shè)的長(zhǎng)度 進(jìn)行拆分,得到第一數(shù)據(jù)塊和第二數(shù)據(jù)塊,第一數(shù)據(jù)塊的編號(hào)為O、字節(jié)長(zhǎng)度為111=62,第二 數(shù)據(jù)塊的編號(hào)為0、字節(jié)長(zhǎng)度為!1=2。
其中,m、 n還可以取其它數(shù)值進(jìn)行拆分,只要m與n的和為Y。
升級(jí)單元406,用于應(yīng)用第二拆分單元405得到的第一數(shù)據(jù)塊作為固件數(shù)據(jù)對(duì)設(shè)備進(jìn)行 固件升級(jí),并將升級(jí)計(jì)數(shù)器值加l。
判斷單元407,用于判斷升級(jí)單元406得到的加1后的升級(jí)計(jì)數(shù)器值是否等于第一拆分 單元402拆分得到的數(shù)據(jù)塊的個(gè)數(shù),如果是,則升級(jí)完成,結(jié)束;否則,按照與升級(jí)編號(hào)為 初始值的數(shù)據(jù)塊相同的方法繼續(xù)升級(jí),直到升級(jí)計(jì)數(shù)器值為第一拆分單元拆分得到的數(shù)據(jù)塊 的個(gè)數(shù)。
其中,可以升級(jí)硬件設(shè)備中的所有固件,也可以有針對(duì)性的根據(jù)需要升級(jí)硬件設(shè)備中的 部分固件,例如,當(dāng)上述升級(jí)數(shù)據(jù)用于升級(jí)硬件設(shè)備的主控程序時(shí),該硬件設(shè)備可以利用獲 取的升級(jí)數(shù)據(jù)的固件數(shù)據(jù)進(jìn)行相應(yīng)升級(jí)。
實(shí)際應(yīng)用中,接收模塊、驗(yàn)證模塊可以運(yùn)行于主機(jī),升級(jí)模塊運(yùn)行于硬件設(shè)備,硬件設(shè) 備收到主機(jī)發(fā)送的升級(jí)數(shù)據(jù)和該升級(jí)數(shù)據(jù)有效的消息后,從該升級(jí)數(shù)據(jù)中提取出用于升級(jí)的 固件數(shù)據(jù),用該固件數(shù)據(jù)對(duì)設(shè)備進(jìn)行固件升級(jí)。
本發(fā)明實(shí)施例的有益效果在于通過將升級(jí)軟件發(fā)送的升級(jí)數(shù)據(jù)拆分,在驗(yàn)證拆分后的 數(shù)據(jù)塊正確后,提取出固件數(shù)據(jù),用該固件數(shù)據(jù)對(duì)設(shè)備進(jìn)行固件升級(jí),這樣,確保了固件數(shù) 據(jù)的唯一性,大大提高了硬件設(shè)備的安全性。本發(fā)明可以升級(jí)硬件設(shè)備中的所有固件,也可 以有針對(duì)性的根據(jù)實(shí)際需要,升級(jí)硬件設(shè)備中的部分固件。
以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之 內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種固件升級(jí)數(shù)據(jù)處理方法,其特征在于,所述方法包括接收升級(jí)數(shù)據(jù);將所述升級(jí)數(shù)據(jù)按預(yù)設(shè)的長(zhǎng)度拆分為多個(gè)數(shù)據(jù)塊,并按預(yù)設(shè)的算法驗(yàn)證所述多個(gè)數(shù)據(jù)塊中指定個(gè)數(shù)的數(shù)據(jù)塊是否均有效,如果是,從所述升級(jí)數(shù)據(jù)中提取固件數(shù)據(jù),用所述固件數(shù)據(jù)對(duì)設(shè)備進(jìn)行固件升級(jí);否則,發(fā)出升級(jí)數(shù)據(jù)錯(cuò)誤信息,結(jié)束。
2. 根據(jù)權(quán)利要求1所述的固件升級(jí)數(shù)據(jù)處理方法,其特征在于,所述接收升級(jí)數(shù)據(jù),具 體包括接收二進(jìn)制bin文件,從所述二進(jìn)制bin文件中獲取所述升級(jí)數(shù)據(jù)。
3. 根據(jù)權(quán)利要求1所述的固件升級(jí)數(shù)據(jù)處理方法,其特征在于,將所述升級(jí)數(shù)據(jù)按預(yù)設(shè) 的長(zhǎng)度拆分為多個(gè)數(shù)據(jù)塊,并按預(yù)設(shè)的算法驗(yàn)證所述多個(gè)數(shù)據(jù)塊中指定個(gè)數(shù)的數(shù)據(jù)塊是否均 有效,具體包括-將所述升級(jí)數(shù)據(jù)以X字節(jié)長(zhǎng)度進(jìn)行拆分,得到多個(gè)數(shù)據(jù)塊,并對(duì)所述多個(gè)數(shù)據(jù)塊依次從 預(yù)設(shè)的初始值開始編號(hào);判斷經(jīng)過編號(hào)的多個(gè)數(shù)據(jù)塊中,編號(hào)最大的數(shù)據(jù)塊是否滿足X字節(jié)長(zhǎng)度,如果否,發(fā)送 升級(jí)數(shù)據(jù)錯(cuò)誤信息,結(jié)束;如果是,在多個(gè)數(shù)據(jù)塊中指定要驗(yàn)證的數(shù)據(jù)塊的個(gè)數(shù),并將驗(yàn)證 計(jì)數(shù)器值設(shè)為所述初始值;在所述指定要驗(yàn)證的數(shù)據(jù)塊中,對(duì)編號(hào)與所述驗(yàn)證計(jì)數(shù)器值相同的X字節(jié)長(zhǎng)度的數(shù)據(jù)塊 按預(yù)設(shè)的算法進(jìn)行運(yùn)算,得到Y(jié)字節(jié)長(zhǎng)度數(shù)據(jù)塊,所述Y字節(jié)長(zhǎng)度數(shù)據(jù)塊的編號(hào)與所述X 字節(jié)長(zhǎng)度數(shù)據(jù)塊的編號(hào)相同;將所述Y字節(jié)長(zhǎng)度數(shù)據(jù)塊按預(yù)設(shè)的長(zhǎng)度拆分為第一數(shù)據(jù)塊和第二數(shù)據(jù)塊,所述第一數(shù)據(jù) 塊和第二數(shù)據(jù)塊的編號(hào)都與所述Y字節(jié)長(zhǎng)度的數(shù)據(jù)塊的編號(hào)相同;對(duì)所述第一數(shù)據(jù)塊進(jìn)行處理,驗(yàn)證處理過的第一數(shù)據(jù)塊與所述第二數(shù)據(jù)塊是否相等;如果否,發(fā)送升級(jí)數(shù)據(jù)錯(cuò)誤信息,結(jié)束;如果是,所述驗(yàn)證計(jì)數(shù)器值加1,并判斷加1后的驗(yàn)證計(jì)數(shù)器值是否等于所述指定要驗(yàn) 證的數(shù)據(jù)塊的個(gè)數(shù),如果是,發(fā)送升級(jí)數(shù)據(jù)有效的信息;否則,按照與驗(yàn)證編號(hào)為初始值的 數(shù)據(jù)塊相同的方法對(duì)指定要驗(yàn)證的數(shù)據(jù)塊繼續(xù)驗(yàn)證,直到驗(yàn)證計(jì)數(shù)器值為所述指定要驗(yàn)證的 數(shù)據(jù)塊的個(gè)數(shù)。
4. 根據(jù)權(quán)利要求3所述的固件升級(jí)數(shù)據(jù)處理方法,其特征在于,對(duì)所述第一數(shù)據(jù)塊進(jìn) 行處理,具體包括對(duì)所述第一數(shù)據(jù)塊采用求或、求和或加密的方法進(jìn)行處理。
5. 根據(jù)權(quán)利要求3所述的固件升級(jí)數(shù)據(jù)處理方法,其特征在于,對(duì)編號(hào)與所述驗(yàn)證計(jì)數(shù) 器值相同的X字節(jié)長(zhǎng)度的數(shù)據(jù)塊按預(yù)設(shè)的算法進(jìn)行運(yùn)算,具體包括用DES、 3DES、 RC4、 AES、 RSA、 ECC或TEA算法將編號(hào)和所述驗(yàn)證計(jì)數(shù)器值相同 的X字節(jié)長(zhǎng)度數(shù)據(jù)塊進(jìn)行運(yùn)算。
6. 根據(jù)權(quán)利要求l所述的固件升級(jí)數(shù)據(jù)處理方法,其特征在于,用所述固件數(shù)據(jù)對(duì)設(shè)備 進(jìn)行固件升級(jí),具體包括將所述升級(jí)數(shù)據(jù)以X字節(jié)長(zhǎng)度進(jìn)行拆分,得到多個(gè)數(shù)據(jù)塊,并對(duì)所述多個(gè)數(shù)據(jù)塊依次從 預(yù)設(shè)的初始值開始編號(hào);將升級(jí)計(jì)數(shù)器設(shè)為所述初始值;在所述多個(gè)數(shù)據(jù)塊中,對(duì)編號(hào)與所述升級(jí)計(jì)數(shù)器值相同的X字節(jié)長(zhǎng)度數(shù)據(jù)塊按預(yù)設(shè)的算 法進(jìn)行運(yùn)算,得到Y(jié)字節(jié)長(zhǎng)度數(shù)據(jù)塊,所述Y字節(jié)長(zhǎng)度數(shù)據(jù)塊的編號(hào)與所述X字節(jié)長(zhǎng)度數(shù) 據(jù)塊的編號(hào)相同;將所述Y字節(jié)長(zhǎng)度數(shù)據(jù)塊按預(yù)設(shè)的長(zhǎng)度拆分為第一數(shù)據(jù)塊和第二數(shù)據(jù)塊,所述第一數(shù)據(jù) 塊和第二數(shù)據(jù)塊的編號(hào)都與所述Y字節(jié)長(zhǎng)度數(shù)據(jù)塊的編號(hào)相同; 將所述第一數(shù)據(jù)塊作為固件數(shù)據(jù)對(duì)設(shè)備進(jìn)行固件升級(jí);所述升級(jí)計(jì)數(shù)器值加1,并判斷加1后的升級(jí)計(jì)數(shù)器值是否等于所述將升級(jí)數(shù)據(jù)拆分得 到的數(shù)據(jù)塊的個(gè)數(shù),如果是,升級(jí)完成,結(jié)束;否則,按照與升級(jí)編號(hào)為初始值的數(shù)據(jù)塊相 同的方法繼續(xù)升級(jí),直到升級(jí)計(jì)數(shù)器值為所述將升級(jí)數(shù)據(jù)按X字節(jié)長(zhǎng)度拆分得到的數(shù)據(jù)塊的 個(gè)數(shù)。
7. 根據(jù)權(quán)利要求6所述的固件升級(jí)數(shù)據(jù)處理方法,其特征在于,對(duì)編號(hào)與所述升級(jí)計(jì)數(shù) 器值相同的X字節(jié)長(zhǎng)度數(shù)據(jù)塊按預(yù)設(shè)的算法進(jìn)行運(yùn)算,具體包括用DES、 3DES、 RC4、 AES、 RSA、 ECC或TEA算法將編號(hào)和所述升級(jí)計(jì)數(shù)器值相同 的X字節(jié)長(zhǎng)度固件升級(jí)數(shù)據(jù)塊進(jìn)行運(yùn)算。
8. —種固件升級(jí)數(shù)據(jù)處理裝置,其特征在于,所述裝置包括接收模塊、驗(yàn)證模塊和 升級(jí)模塊;所述接收模塊用于接收升級(jí)軟件發(fā)送的升級(jí)數(shù)據(jù);所述驗(yàn)證模塊用于將所述接收模塊收到的升級(jí)數(shù)據(jù)按預(yù)設(shè)的長(zhǎng)度拆分為多個(gè)數(shù)據(jù)塊,并 按預(yù)設(shè)的算法驗(yàn)證所述多個(gè)數(shù)據(jù)塊中指定個(gè)數(shù)的數(shù)據(jù)塊是否均有效,如果是,所述升級(jí)模塊 從所述升級(jí)數(shù)據(jù)中提取出固件數(shù)據(jù),用所述固件數(shù)據(jù)對(duì)設(shè)備進(jìn)行固件升級(jí);否則,發(fā)出升級(jí) 數(shù)據(jù)錯(cuò)誤信息,結(jié)束。
9. 根據(jù)權(quán)利要求8所述的固件升級(jí)數(shù)據(jù)處理裝置,其特征在于,所述接收模塊具體包括接收單元,用于接收二進(jìn)制bin文件;獲取單元,用于從所述接收單元接收到的二進(jìn)制bin文件中獲取升級(jí)數(shù)據(jù)。
10. 根據(jù)權(quán)利要求8所述的固件升級(jí)數(shù)據(jù)處理裝置,其特征在于,所述驗(yàn)證模塊具體包括第一拆分單元,用于將接收模塊接收到的升級(jí)數(shù)據(jù)以x字節(jié)長(zhǎng)度進(jìn)行拆分,得到多個(gè)數(shù)據(jù)塊,并對(duì)所述多個(gè)數(shù)據(jù)塊依次從預(yù)設(shè)的初始值開始編號(hào);第一判斷單元,用于判斷所述第一拆分單元得到的編號(hào)的數(shù)據(jù)塊中,編號(hào)最大的數(shù)據(jù)塊是否滿足X字節(jié)長(zhǎng)度,如果否,發(fā)送升級(jí)數(shù)據(jù)錯(cuò)誤信息,結(jié)束;如果是,將驗(yàn)證計(jì)數(shù)器值設(shè)為所述初始值;發(fā)送單元,用于發(fā)送所述第一判斷單元和所述驗(yàn)證單元得到升級(jí)數(shù)據(jù)錯(cuò)誤信息和所述第 二判斷單元的得到的升級(jí)數(shù)據(jù)有效的信息;指定單元,用于在多個(gè)數(shù)據(jù)塊中指定要驗(yàn)證的數(shù)據(jù)塊的個(gè)數(shù);運(yùn)算單元,用于在所述第一拆分單元得到的多個(gè)數(shù)據(jù)塊中,對(duì)編號(hào)與所述驗(yàn)證計(jì)數(shù)器值 相同的X字節(jié)長(zhǎng)度數(shù)據(jù)塊進(jìn)行運(yùn)算,得到Y(jié)字節(jié)長(zhǎng)度數(shù)據(jù)塊,所述Y字節(jié)長(zhǎng)度數(shù)據(jù)塊的編 號(hào)與所述X字節(jié)長(zhǎng)度數(shù)據(jù)塊的編號(hào)相同;第二拆分單元,用于將所述運(yùn)算單元得到的Y字節(jié)長(zhǎng)度數(shù)據(jù)塊按預(yù)設(shè)的長(zhǎng)度進(jìn)行拆分, 得到第一數(shù)據(jù)塊和第二數(shù)據(jù)塊,所述第一數(shù)據(jù)塊和第二數(shù)據(jù)塊的編號(hào)都與所述Y字節(jié)長(zhǎng)度數(shù) 據(jù)塊的編號(hào)相同;驗(yàn)證單元,用于對(duì)所述第二拆分單元得到的第一數(shù)據(jù)塊進(jìn)行處理,并驗(yàn)證處理過的第一 數(shù)據(jù)塊與所述第二數(shù)據(jù)塊是否相等,如果否,發(fā)送升級(jí)數(shù)據(jù)錯(cuò)誤信息,結(jié)束;如果是,所述驗(yàn)證計(jì)數(shù)器值加1;第二判斷單元,用于判斷所述驗(yàn)證單元得到的加1后的驗(yàn)證計(jì)數(shù)器值是否等于所述指定 單元指定要驗(yàn)證的數(shù)據(jù)塊的個(gè)數(shù),如果是,發(fā)送升級(jí)數(shù)據(jù)有效的信息;否則,按照與驗(yàn)證編 號(hào)為初始值的數(shù)據(jù)塊相同的方法對(duì)所述指定單元指定要驗(yàn)證的數(shù)據(jù)塊繼續(xù)驗(yàn)證,直到驗(yàn)證計(jì) 數(shù)器值為所述指定單元指定要驗(yàn)證的數(shù)據(jù)塊的個(gè)數(shù)。
11. 根據(jù)權(quán)利要求10所述的固件升級(jí)數(shù)據(jù)處理裝置,其特征在于,所述運(yùn)算單元對(duì)編號(hào) 與所述驗(yàn)證計(jì)數(shù)器值相同的X字節(jié)長(zhǎng)度數(shù)據(jù)塊,采用DES、 3DES、 RC4、 AES、 RSA、 ECC 或TEA算法進(jìn)行運(yùn)算。
12. 根據(jù)權(quán)利要求10所述的固件升級(jí)數(shù)據(jù)處理裝置,其特征在于,所述驗(yàn)證單元對(duì)所述 第二拆分單元得到的第一數(shù)據(jù)塊采用求或、求和或加密的方法進(jìn)行處理。
13. 根據(jù)權(quán)利要求8所述的固件升級(jí)數(shù)據(jù)處理裝置,其特征在于,所述升級(jí)模塊具體包括第一拆分單元,用于將所述接收模塊接收到的升級(jí)數(shù)據(jù)以X字節(jié)長(zhǎng)度進(jìn)行拆分,得到多 個(gè)數(shù)據(jù)塊,并對(duì)所述多個(gè)數(shù)據(jù)塊依次從預(yù)設(shè)的初始值開始編號(hào); 設(shè)置單元,用于將升級(jí)計(jì)數(shù)器值設(shè)為所述初始值;運(yùn)算單元,用于對(duì)所述第一拆分單元得到的多個(gè)數(shù)據(jù)塊中,對(duì)編號(hào)與所述升級(jí)計(jì)數(shù)器值 相同的X字節(jié)長(zhǎng)度數(shù)據(jù)塊按預(yù)設(shè)的算法進(jìn)行運(yùn)算,得到Y(jié)字節(jié)長(zhǎng)度數(shù)據(jù)塊,所述Y字節(jié)長(zhǎng) 度數(shù)據(jù)塊的編號(hào)與所述X字節(jié)長(zhǎng)度數(shù)據(jù)塊的編號(hào)相同;第二拆分單元,用于對(duì)所述運(yùn)算單元得到的Y字節(jié)長(zhǎng)度數(shù)據(jù)塊按預(yù)設(shè)的長(zhǎng)度進(jìn)行拆分, 得到第一數(shù)據(jù)塊和第二數(shù)據(jù)塊,所述第一數(shù)據(jù)塊和第二數(shù)據(jù)塊的編號(hào)都與所述Y字節(jié)長(zhǎng)度數(shù) 據(jù)塊的編號(hào)相同;升級(jí)單元,用于將所述第二拆分單元得到的第一數(shù)據(jù)塊作為固件數(shù)據(jù)對(duì)設(shè)備進(jìn)行固件升 級(jí),并將升級(jí)計(jì)數(shù)器值加l;判斷單元,用于判斷所述升級(jí)單元得到的加1后的升級(jí)計(jì)數(shù)器值是否等于所述第一拆分單元拆分得到的數(shù)據(jù)塊的個(gè)數(shù),如果是,則升級(jí)完成,結(jié)束;否則,按照與升級(jí)編號(hào)為初始 值的數(shù)據(jù)塊相同的方法繼續(xù)升級(jí),直到升級(jí)計(jì)數(shù)器值為所述第一拆分單元拆分得到的數(shù)據(jù)塊 的個(gè)數(shù)。
14. 根據(jù)權(quán)利要求13所述的固件升級(jí)數(shù)據(jù)處理裝置,其特征在于,所述運(yùn)算單元對(duì)編號(hào) 與所述升級(jí)計(jì)數(shù)器值相同的X字節(jié)長(zhǎng)度數(shù)據(jù)塊,采用DES、 3DES、 RC4、 AES、 RSA、 ECC 或TEA算法進(jìn)行運(yùn)算。
全文摘要
本發(fā)明公開了一種固件升級(jí)數(shù)據(jù)處理方法,屬于計(jì)算機(jī)應(yīng)用技術(shù)領(lǐng)域。所述方法包括接收升級(jí)數(shù)據(jù);將所述升級(jí)數(shù)據(jù)拆分為多個(gè)數(shù)據(jù)塊,驗(yàn)證所述多個(gè)數(shù)據(jù)塊中指定個(gè)數(shù)的數(shù)據(jù)塊是否均有效,如果是,從所述升級(jí)數(shù)據(jù)中提取固件數(shù)據(jù),用所述固件數(shù)據(jù)對(duì)設(shè)備進(jìn)行固件升級(jí),否則,發(fā)出升級(jí)數(shù)據(jù)錯(cuò)誤信息,結(jié)束。本發(fā)明還公開了一種固件升級(jí)數(shù)據(jù)處理裝置,所述裝置包括接收模塊、驗(yàn)證模塊和升級(jí)模塊。本發(fā)明提高了升級(jí)數(shù)據(jù)和硬件設(shè)備的安全性。
文檔編號(hào)G06F11/00GK101373440SQ20081022371
公開日2009年2月25日 申請(qǐng)日期2008年10月9日 優(yōu)先權(quán)日2008年10月9日
發(fā)明者于華章, 舟 陸 申請(qǐng)人:北京飛天誠信科技有限公司