如何用分組密碼對流媒體文件加密

流媒體不同于一般的文件,它是“流動”的媒體文件,下面我們就來給大家講講用分組密碼如何給流媒體文件加密。

分組密碼對流媒體文件加密的方法:

常用的分組加密算法有DES、AES.IDEA和RC6加密算法等,它們 的共同特點是將明文以分組為單位進行加密處理。

我們假設(shè)算法的密鑰長和分組長均為1 28位,并將加密方式分為塊式加密blockEncrypt和填充式加密padEricrypt兩種,以兼顧不同包長的要求,blockEncrypt方式要求明文長度必須是塊長128的整倍數(shù),所得密文與明文長度相同。padEncrypt方式對明文長度不作要求,對小于128的分組會自動填充一些附加字節(jié),密文會比明文長一些。

在多媒體文件的流式傳輸中,一個文件被分為許許多多的協(xié)議數(shù)據(jù)包,分組算法是將數(shù)據(jù)包作為明文的.確定數(shù)據(jù)包長度時不僅要考慮到取分組長度的整數(shù)倍.還要兼顧網(wǎng)絡(luò)傳輸?shù)男屎涂煽啃孕枨?,這樣可將包長可定為1280B、19208或2560B等,但無論如何也難保證最后一個包也是塊長的整數(shù)倍,因此,我們將blockEncrypt和padEncrypt兩種方式結(jié)合起來,僅對最后一個數(shù)據(jù)包采用padEncrypt加密方式.而對前面所有的數(shù)據(jù)包都采用blockEncrypt加密方式,這樣就可以免去處理加密時數(shù)據(jù)位的擴展問題,從而減少了處理時間和所需空間,提高了時空效率。

數(shù)據(jù)包的加密過程:

首先把一個長度為2560B的明文數(shù)據(jù)包分成1 60個長度為1 28位的分組。一個網(wǎng)絡(luò)數(shù)據(jù)包的加密過程可以簡單地描述如下:

數(shù)據(jù)包的加密算法(明文位置指針input,密文位置指針autput,...)
{
switch(加密模式){
case ECB:
For(i=0; i<(包長/128)i++)
{
//從數(shù)據(jù)包中按序?qū)γ總€128位的分組進行加密
encrypt (input.output);
//定位到下一個分組,并修改加密文件位置指針
input+=16;
output+=16;
}
//若是padencypt加密需要在此處理最后一塊數(shù)據(jù),要先填充再加密......
break;
case CBC:
將分組數(shù)據(jù)與初始化向量進行按位異或操作.
encrypt (input, output);
//定位到第二個分組
inpul+=16;
For(i=0;i<(包長/128),i++)
{
將分組數(shù)據(jù)與上一組的密文結(jié)果進行按位異或操作;
//修改密文位置
output+=16;
encrypt (input,output}
//定位到下一個分組
input+=16;
}
//對padencypt式加密需在此處理最后一塊數(shù)據(jù)
break;
}
return(加密的總位數(shù));
//padencypt式加密的密文位數(shù)>明文位數(shù)
}

其中encrypt為某種加密算法下的分組加密函數(shù),調(diào)用方式為:
erlcrypt(分組明文.分組密文......)

以上是一個數(shù)據(jù)包在服務(wù)器方的加密過程,當(dāng)密文數(shù)據(jù)包到達客戶方后,要按照相反的過程進行解密。加解密過程類似,但又不完全相同。

用分組密碼對流媒體文件加密,方法就是這么的簡便,不妨您可以操作試試。

小知識之分組密碼:

分組密碼是將明文消息編碼表示后的數(shù)字(簡稱明文數(shù)字)序列,劃分成長度為n的組(可看成長度為n的矢量),每組分別在密鑰的控制下變換成等長的輸出數(shù)字(簡稱密文數(shù)字)序列。