本發(fā)明涉及網(wǎng)絡通信及多媒體文件傳輸技術,尤其涉及一種音頻文件的加密解密方法。
背景技術:
近年來隨著互聯(lián)網(wǎng)技術的發(fā)展,人們獲得多媒體文件,如cd、vcd/dvd格式的數(shù)字音視頻片等的途徑和方式也發(fā)生了根本性的變化。從以往購買以cd、vcd、dvd為載體的實物商品,轉變?yōu)橥ㄟ^各種電子智能終端,如pc機、平板電腦、移動智能終端(即手機)從互聯(lián)網(wǎng)在線播放或下載后進行播放的方式獲取。
由于發(fā)布在互聯(lián)網(wǎng)上的多媒體文件,多以原始文件的形式存在,也有將原始文件進行簡單分割后以幾個文件片段的形式存儲在網(wǎng)絡的;稍復雜點的,對分發(fā)的多媒體文件或多媒體流文件,采用基于超文本傳輸協(xié)議(hypertexttransferprotocol,http)進行文件傳輸,容易被嗅探得到資源下載路徑得到原始多媒體文件。因而,網(wǎng)絡用戶能夠輕而易舉地直接通過在線播放或下載的方式就能免費獲得和使用這樣的原始多媒體文件,這對包含在該多媒體文件中的作品享有著作權的權利人而言,是一種權益侵害,同時,這種行為還涉嫌違反著作權法。
技術實現(xiàn)要素:
有鑒于此,本發(fā)明的主要目的在于提供一種音頻文件的加密解密方法,以利于對采用本發(fā)明的加密方法加密的音頻文件進行加密傳輸,從而實現(xiàn)對多媒體資源的版權保護。
為達到上述目的,本發(fā)明的技術方案是這樣實現(xiàn)的:
一種音頻文件的加密方法,該方法包括如下步驟:
a、準備好加密算法alg密鑰key和加密解密的初始值iv;
b、選擇一種音頻編碼方式,用于對原始音頻數(shù)據(jù)進行編碼;
c、初始化ogg輸出流,給當前音頻流分配一個二進制流序號serial_no,頁序數(shù)page_seq_no置零;
d、取一小段固定長度的音頻數(shù)據(jù)wave_data_1,使用給定的音頻編碼方式對音頻數(shù)據(jù)進行編碼,得到編碼后的二進制數(shù)據(jù)塊data_block_1;
e、將所述二進制數(shù)據(jù)塊data_block_1寫入ogg流,得到若干個ogg頁;
f、對新產(chǎn)生的ogg頁,使用步驟a當中準備好的加密參數(shù)對該頁的負載進行加密計算。
其中,所述步驟f之后進一步包括:
g、重復步驟d~步驟f,直至音頻流結束。
步驟b所述的音頻編碼方式,包括flac、mp3、aac、opus、vorbis中的任意一種。
步驟f具體包括:
f1、采用加密初始值vi'=vixorserial_noxorpage_seq_no,頁頭當中包含的crc校驗碼使用加密后的內(nèi)容作為負載重新計算;
f2、使用加密后的二進制數(shù)據(jù)替換該頁原有的負載,把新產(chǎn)生的ogg頁寫入輸出流。
一種音頻文件的解密方法,該方法包括如下步驟:
a、準備好加密算法alg密鑰key和加密解密的初始值iv;
b、用戶或上層調(diào)用程序提供音頻編碼方式;
c、初始化ogg輸入流,獲得音頻輸入流的二進制流序號serial_no;
d、讀入一個ogg頁,獲取當前頁的crc校驗碼、頁序數(shù)page_seq_no和負載;
e、對當前頁的負載進行crc校驗,檢測其是否完整;
f、計算實際使用的解密初始值vi'=vixorserial_noxorpage_seq_no;
g、使用加密算法alg、密鑰key和初始值vi'對當前ogg頁的負載進行解密,獲得解密后的數(shù)據(jù)data_block_1;
h、使用步驟b中提供的音頻解碼方式對data_block_1進行解碼,獲得一小段音頻數(shù)據(jù)wave_data_1。
其中,步驟h之后進一步包括:
i、重復步驟d~步驟h,直到ogg輸入流結束。
步驟b所述的音頻編碼方式,包括flac、mp3、aac、opus、vorbis中的任意一種。
步驟e所述當前頁的負載進行crc校驗,檢測其是否完整,具體包括:
如果完整,則返回解密、解碼后的原始音頻;如果不完整,則提示上層應用,由上層應用進行靜音、停止解碼或提示用戶有數(shù)據(jù)損壞等操作之一。
本發(fā)明所提供的音頻文件的加密解密方法,具有以下優(yōu)點:
相較于現(xiàn)有技術(如flash文件,即flv格式文件的傳輸)的缺點,諸如傳輸?shù)膬?nèi)容種類有限、傳輸方向單一(不允許讓用戶主動發(fā)送內(nèi)容、不能在用戶之間傳輸內(nèi)容)、實時性差、傳輸安全性差、內(nèi)容容易被下載保存(不利于版權保護)等缺陷或不足,本發(fā)明提供的基于互聯(lián)網(wǎng)的加密音頻流的文件傳輸系統(tǒng)及其方法的方案,通過對數(shù)字多媒體資源(包括音頻流)進行加密和解密的方式,既可以讓藝術創(chuàng)作者安全、放心地以多媒體流的方式分發(fā)數(shù)字媒體作品,也可以讓藝術創(chuàng)作者們相互之間高效、即時性地遠程交流、協(xié)作。
附圖說明
圖1為本發(fā)明實施例基于加密音頻流的文件傳輸系統(tǒng)的結構示意圖;
圖2為本發(fā)明圖1所示基于加密音頻流的文件傳輸過程示意圖;
圖3a、圖3b分別為本發(fā)明實施例音頻(流)文件的加密、解密過程示意圖。
具體實施方式
下面結合附圖及本發(fā)明的實施例對本發(fā)明的音頻流文件的加密解密方法作進一步詳細的說明。
圖1為本發(fā)明實施例基于加密音頻流的文件傳輸系統(tǒng)的結構示意圖。
如圖1所示,該實施例的文件傳輸系統(tǒng)主要包括:瀏覽器(browser)f、第三方網(wǎng)站(3rdpartywebsite)a、登錄網(wǎng)站(loginwebsite)b、api服務器(apiserver)c、ugxp服務器(ugxpserver)d、資源服務器(即res服務器)e。其中:
所述瀏覽器f,用于展現(xiàn)用戶所瀏覽的網(wǎng)站的內(nèi)容,以及提供用戶與網(wǎng)站之間的操作交互。
第三方網(wǎng)站a,用于提供用戶所瀏覽的內(nèi)容。
api服務器c,用于給第三方網(wǎng)站鑒別與認證用戶的身份、核實用戶權限。
ugxp服務器d,用于對多媒體資源進行實時動態(tài)加密,用于對多媒體資源進行重新編碼,還用于對多媒體資源進行實時預處理、再處理。所述再處理,包括添加水印、音量調(diào)整等。
res服務器e,用于存放與提供預先創(chuàng)作好的需要進行版權保護的多媒體資源的明文版本。所述明文,就是說所述需要進行版權保護的多媒體資源是未加密的。
還包括登錄網(wǎng)站b,用于給用戶提供一個統(tǒng)一的賬戶登錄、核實身份、鑒權的圖形化界面。
圖2為本發(fā)明圖1所示基于加密音頻流的文件傳輸過程示意圖。
如圖2所示,該文件傳輸過程包括如下步驟:
步驟1:利用瀏覽器f向第三方網(wǎng)站a的服務器發(fā)起網(wǎng)頁請求;
步驟2:所述第三方網(wǎng)站a的服務器返回初始頁;
步驟3:瀏覽器f返回請求資源;
步驟4:若尚未登錄,則需先向api服務器c發(fā)送登錄請求;若已登錄,跳至第三方服務器b;
步驟5:api服務器c返回登錄請求的請求令牌(request_token);
步驟6:在第三方網(wǎng)站a的服務器中生成跳轉瀏覽器地址,其帶有請求令牌(request_token)和請求統(tǒng)一資源定位符(request_url);
步驟7:瀏覽器f跳轉到登錄網(wǎng)站b進行登錄;
步驟8:若登錄成功,引導瀏覽器f跳轉到請求統(tǒng)一資源定位符(request_url),并帶有令牌(token);若登錄失敗,則結束。
步驟9:瀏覽器f使用所述request_url+token訪問第三方網(wǎng)站a;
步驟10:第三方網(wǎng)站a訪問api服務器c,驗證所述令牌(token)的有效性;
步驟11:若令牌(token)有效,返回用戶登錄信息;所述信息包括訪問令牌(access_token)和刷新令牌(refresh_token);若令牌(token)無效,則返回錯誤提示內(nèi)容。
步驟12:第三方網(wǎng)站a返回用戶賬戶登錄信息給瀏覽器f;
步驟13:通過瀏覽器f向ugxp服務器d發(fā)送請求;
步驟14:所述ugxp服務器d返回“401未授權(unauthorize)”信息,并帶上www-authenticate字段;
步驟15:通過瀏覽器f向ugxp服務器d發(fā)送請求,帶上authorization作為認證信息以鑒權;具體包括:
步驟151:ugxp服務器d向api服務器c發(fā)送請求,鑒別訪問令牌(access_token)有效性;
步驟152:api服務器c向ugxp服務器d返回access_token有效性,若有效,則帶上用戶登錄信息。
步驟16:若鑒權成功,返回101狀態(tài)碼,建立websocket連接;
步驟17:瀏覽器f向ugxp服務器d發(fā)送describe命令;
步驟18:ugxp服務器d向res服務器e發(fā)送請求,獲取目標資源元信息;
步驟19:若該資源存在,返回資源元信息;若不存在,則返回錯誤提示;
步驟20:所述ugxp服務器d向瀏覽器f返回元信息或錯誤碼;
步驟21:所述瀏覽器f向ugxp服務器d發(fā)送安裝(setup)命令;
步驟22:ugxp服務器d作必要的準備,并返回(200ok);
步驟23:瀏覽器f向ugxp服務器d發(fā)出播放(play)命令;
步驟24:ugxp服務器d向res服務器e請求媒體資源;
步驟25:res服務器e向ugxp服務器d返回請求媒體資源;
步驟26:ugxp服務器d對獲取的媒體資源重新編碼,并采用ogg容器進行封裝,對于ogg封裝的每個分頁,進行aes加密,所采用的秘鑰可從用戶登錄信息加以計算得到,并向瀏覽器f發(fā)送加密后的媒體資源;
步驟27:瀏覽器f從用戶登錄信息中獲得所述的秘鑰,通過瀏覽器f進行aes解密,然后利用瀏覽器f對已解密的媒體資源進行播放。
至此,采用上述技術方案,實現(xiàn)了利用動態(tài)網(wǎng)頁技術,有鑒權、有限制地提供媒體資源(多媒體內(nèi)容),在傳輸時能夠動態(tài)地對所傳輸?shù)膬?nèi)容進行加密保護,實現(xiàn)了阻斷傳統(tǒng)開發(fā)者讀取在線播放中的源文件信息及路徑從而獲得媒體資源的途徑,從而保護了媒體資源的版權。同時,由于采用音頻幀時間間隔小的opus音頻編碼和ogg封裝格式,實現(xiàn)了超低時延(小于5ms)的網(wǎng)絡音頻傳輸目的。此外,利用服務器到瀏覽器的雙向傳輸技術,在內(nèi)容為即時生成的前提下(交互式創(chuàng)作),仍可即時回傳所生成的內(nèi)容,可以在不增加通信信道的前提下,實時傳輸音樂創(chuàng)作所需的midi信號和元信息,并做到了在不增加通信信道的前提下實時傳輸多位參與創(chuàng)作者的多媒體內(nèi)容。
利用本發(fā)明,當用戶在線時,通過編輯已加密的媒體資源上傳至服務器后的源文件內(nèi)容,完成編輯后,瀏覽器f再次訪問服務器時,所訪問的源文件內(nèi)容即為已編輯后的內(nèi)容,從而實現(xiàn)在線編輯并與其他在線的藝術家同步的協(xié)作交流功能。
圖3a、圖3b分別為本發(fā)明實施例音頻(流)文件的加密、解密過程示意圖。
如圖3a所示,該加密的過程包括如下步驟:
步驟311:準備好加密算法alg密鑰key和加密解密的初始值iv;
步驟312:選擇一種音頻編碼方式,用于對原始音頻數(shù)據(jù)進行編碼,如:flac、mp3、aac、opus、vorbis;
步驟313:初始化ogg輸出流,給當前音頻流分配一個二進制流序號serial_no,頁序數(shù)page_seq_no置零;
步驟314:取一小段固定長度的音頻數(shù)據(jù)wave_data_1,使用給定的音頻編碼方式對音頻數(shù)據(jù)進行編碼,得到編碼后的二進制數(shù)據(jù)塊data_block_1;
步驟315:將所述二進制數(shù)據(jù)塊data_block_1寫入ogg流,得到若干個ogg頁;
步驟316:對新產(chǎn)生的ogg頁,使用步驟311當中準備好的加密參數(shù)對該頁的負載進行加密計算。其中,實際用到的加密初始值vi'=vixorserial_noxorpage_seq_no,頁頭當中包含的crc校驗碼使用加密后的內(nèi)容作為負載重新計算。使用加密后的二進制數(shù)據(jù)替換該頁原有的負載,把新產(chǎn)生的ogg頁寫入輸出流。
步驟317:重復步驟314~步驟316,直至音頻流結束。
如圖3b所示,該解密的過程包括如下步驟:
步驟321:準備好加密算法alg密鑰key和加密解密的初始值iv;
步驟322:用戶或上層調(diào)用程序提供音頻編碼方式;
這里,所述的音頻編碼方式,包括flac、mp3、aac、opus、vorbis中的任意一種。
步驟323:初始化ogg輸入流,獲得音頻輸入流的二進制流序號serial_no;
步驟324:讀入一個ogg頁,獲取當前頁的crc校驗碼、頁序數(shù)page_seq_no和負載;
步驟325:對當前頁的負載進行crc校驗,檢測其是否完整;如果完整,則返回解密、解碼后的原始音頻;如果不完整,則提示上層應用,由上層應用進行靜音、停止解碼或提示用戶有數(shù)據(jù)損壞等操作之一。
步驟326:計算實際使用的解密初始值vi'=vixorserial_noxorpage_seq_no;
步驟327:使用加密算法alg、密鑰key和初始值vi'對當前ogg頁的負載進行解密,獲得解密后的數(shù)據(jù)data_block_1;
步驟328:使用步驟322中提供的音頻解碼方式對data_block_1進行解碼,獲得一小段音頻數(shù)據(jù)wave_data_1;
步驟329:重復步驟324~步驟328,直到ogg輸入流結束。
以上所述,僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。