发明内容
针对现有技术存在的问题,本发明的主要目的在于提供一种数字音频秘密分享和恢复方法,只需要获取其中部分嵌入秘密音频的掩盖音频即能完全恢复原本的秘密音频文件。
为实现上述目的,本发明提供了一种数字音频秘密分享方法的实施例,将秘密音频隐藏到掩盖音频中,该数字音频秘密分享方法包括如下步骤:
(1)选取n个掩盖音频,并将该n个掩盖音频的低位去除;
(2)每次取待隐藏的秘密音频的1个字节的信息,设值为AL,1≤L≤M,其中M为待隐藏的秘密音频的总字节数;
(3)按一定的规则重新排列取出的秘密音频数据,生成序列E,其中的元素设为{ei},所述规则为:判断AL是否小于250,若AL<250,则直接将AL存入序列E;若AL≥250,则依次将250和AL-250存入序列E;其中1≤i≤M+(AL≥250的数量)。
(4)按顺序取出序列E中k个数据,其中k的大小可自行选定,只需满足:2≤k≤n,依次构成k维向量β=[e1,e2,...ek],若最后不足k个数据,以0补齐,生成j个β向量;
(5)定义一个k-1阶多项式fj(x)=(a0+a1x+a2x2+...+ak-1xk-1)mod251,将β中的各个元素分别作为多项式的系数,构成j个多项式fj(x),计算出fj(1),fj(2),...fj(n);
(6)将fj(1),fj(2),...fj(n)按顺序分别嵌入n个掩盖音频的低位部分,直到第j个多项式的n个值嵌入掩盖音频。
当第j个多项式的n个值嵌入掩盖音频后,可将原秘密音频文件销毁。
其中,选取的掩盖音频最好为WAVE格式,选取掩盖音频后,即将掩盖音频的低位去除,其方法为:若掩盖音频的采样精度为l,则将掩盖音频采样精度的低l/2位去除,以全0或全1填充。此时选取的掩盖音频的大小m
1,m
2,...,m
n,必需满足条件:
δ为预留的很小的空间。
使用上述数字音频秘密分享方法隐藏秘密音频后,本发明还提供一种对隐藏的秘密音频进行恢复的数字音频秘密恢复方法,该掩盖音频嵌入秘密音频后形成份额音频,使用至少k个份额音频(即k个或k个以上份额音频)可恢复出原隐藏的秘密音频文件,其中2≤k≤n,该数字音频秘密恢复方法包括如下步骤:
(1)从k个份额音频中按顺序取出存储在相应位置的值fj(x),其中1≤x≤n;
(2)利用k对值(xi,fj(xi)),其中1≤i≤k,1≤xi≤n,通过拉格朗日插值多项式公式计算得到多项式fj(x)=(a0+a1x+a2x2+...+ak-1xk-1),直到每个份额音频中存储的所有j个值fj(xi)都被处理,得到j个多项式fj(x),其中拉格朗日插值多项式公式为:(i≠j),而yj=fj(xi);
(3)将j个多项式fj(x)的系数[a0,a1,...ak-1]取出并依次排列,去除末尾的0值,得到序列E,其中的元素为{ei};
(4)按顺序取出序列E中的元素{ei},若ei<250,则将ei直接存入序列S;若ei=250,则直接读取下一个元素ei+1,并将数据250+ei+1存入序列S,直到序列E中所有的元素处理完毕;
(5)序列S为原隐藏的秘密音频文件。
本发明相对于现有技术,首先选取n个适合的掩盖音频,其次将待隐藏的秘密音频经过一定的分享运算,将分享运算后的秘密音频分别存储在n个掩盖音频中,只需要获取其中k个份额音频即能完全恢复原本的秘密音频文件,而k的值可以在2≤k≤n的范围内任意选择,当k值选择较小时,则只需要获取较少的份额音频数量即可恢复原本的秘密音频文件;当k值选择较大时,则需要获取较多的份额音频数量才能恢复原本的秘密音频文件;当k值选择为n时,则需要获取所有的份额音频才能恢复原本的秘密音频文件。另外,在音频文件网络通信中,由于待隐藏的秘密音频文件经过分享运算,更不容易被对方解密。
具体实施方式
下面结合附图,详细说明本发明的具体实施方式。
下面结合图1~图4具体说明本发明的数字音频秘密分享方法。图1为本发明的数字音频秘密分享方法的实施例的流程图。该数字音频秘密分享方法包括如下步骤:
S11、选取n个掩盖音频,选取的掩盖音频最好为WAVE格式,若为其它格式,可将其转化为WAVE格式;
S12、将掩盖音频的低位去除,其方法为:若掩盖音频的采样精度为l,则将掩盖音频采样精度的低l/2位去除,以全0或全1填充。此时选取的掩盖音频的大小m
1,m
2,...,m
n,必需满足条件:
(i=1,2,...,n),δ为预留的很小的空间;当然,也可以将掩盖音频采样精度的低l/3位去除,而此时选取的掩盖音频的大小必需满足条件:
(i=1,2,...,n)。也就是说,掩盖音频的低位部分去除的大小可根据需要自行选择,但以去除低位部分后的掩盖音频仍具有清晰的听觉意义为限,以避免暴露掩盖音频;
图2为本发明的掩盖音频去除低位的示意图。根据掩盖音频的采样精度,采样精度高的为高位部分,采样精度低的为低位部分,可根据需要将一定大小的低位部分去除,并用全0或全1填充,如将掩盖音频采样精度的低l/2位去除,以全0或全1填充。
S13、每次取待隐藏的秘密音频的1个字节的信息,设值为AL,1≤L≤M,其中M为待隐藏的秘密音频的总字节数,则AL∈[0,255];
S14、按一定的规则重新排列取出的秘密音频数据,生成序列E,其中的元素设为{ei},该规则为:判断AL是否小于250,若AL<250,则直接将AL存入序列E;若AL≥250,则依次将250和AL-250存入序列E;
S15、按顺序取出序列E中k个数据,其中k可根据需要自行选择,但需满足条件2≤k≤n,依次构成k维向量β=[e1,e2,...ek],若最后不足k个数据,以0补齐,生成j个β向量;
S16、定义一个k-1阶多项式fj(x)=(a0+a1x+a2x2+...+ak-1xk-1)mod251,将β中的各个元素分别作为多项式的系数,构成j个多项式fj(x),计算出fj(1),fj(2),...fj(n);
图3为本发明的秘密音频处理过程示意图,可具体解释S13~S16。首先,每次取待隐藏的秘密音频的1个字节的信息,记为A
L,1≤L≤M,M为待隐藏的秘密音频的总字节数,生成A
1,A
2,A
3...A
M,其中A
L∈[0,255];其次,按S14中列举的规则对A
1,A
2,A
3...A
M进行运算和重排列生成序列E,记为{e
i},因为当A
L≥250时,将A
L拆分为250和A
L-250两个数,则序列E中的元素数量为M+amount(A
L≥250),amount(A
L≥250)表示A
L的值大于或等于250的数量,因此序列E包括:
;接着,将所有序列E中的元素进行排列,构成k维β向量,若最后不足k个数据,以0补齐,共生成j个β向量,分别为β
1=[e
1,e
2,...e
k],β
2=[e
k+1,e
k+2,...e
2k],...β
j=[e
(j-1)k+1,e
(j-1)k+2,...e
jk];然后,定义一个k-1阶多项式f
j(x)=(a
0+a
1x+a
2x
2+...+a
k-1x
k-1)mod251,将β中的各个元素分别作为多项式的系数,构成j个多项式f
j(x),即将β
1中的元素作为多项式f
1(x)的系数,β
2中的元素作为多项式f
2(x)的系数,...β
j中的元素作为多项式f
j(x)的系数;最后,计算出f
j(1),f
j(2),...f
j(n),构成一个n*j的二维向量,即共包含n*j个值。
S17、将fj(1),fj(2),...fj(n)按顺序分别嵌入n个掩盖音频的低位部分,直到第j个多项式的n个值嵌入掩盖音频。
图4为本发明的秘密音频处理结果存入掩盖音频示意图,可具体解释S17。即首先将f1(1),f1(2),...f1(n)依次存入掩盖音频1,掩盖音频2....掩盖音频n的低位部分,然后将f2(1),f2(2),...f2(n)依次存入掩盖音频1,掩盖音频2....掩盖音频n的低位部分,直到fj(1),fj(2),...fj(n)依次存入掩盖音频1,掩盖音频2....掩盖音频n的低位部分,分存完毕。
通过以上步骤将待隐藏的秘密音频完全嵌入到掩盖音频中后,此时可将原秘密音频损毁。
使用上述数字音频秘密分享方法隐藏秘密音频后,本发明还提供一种对隐藏的秘密音频进行恢复的数字音频秘密恢复方法,该掩盖音频嵌入秘密音频后形成份额音频,使用至少k个份额音频(即k个或k个以上)可恢复出原隐藏的秘密音频文件,其中2≤k≤n,下面结合图5~图7具体说明本发明的数字音频秘密恢复方法。
图5为本发明的数字音频秘密恢复方法的实施例的流程图,具体包含如下步骤:
S51、从k个份额音频中按顺序取出存储在相应位置的值fj(x),其中1≤x≤n;
图6为本发明的从份额音频中取出存储值示意图,可具体解释S51。有k个份额音频,包括份额音频x1,份额音频x2,...份额音频xk,1≤xk≤n,每个份额音频都包含了高位部分和低位部分,其中高位部分为原掩盖音频的高位部分,而低位部分则为隐藏的秘密音频,即依次从份额音频x1,份额音频x2,...份额音频xk的低位部分取出f1(x1),f1(x2)...f1(xk)排在第一行,接着从份额音频x1,份额音频x2,...份额音频xk的低位部分取出f2(x1),f2(x2)...f2(xk)排在第二行,直到取出fj(x1),fj(x2)...fj(xk)排在第j行。
S52、利用k对值(xi,fj(xi)),其中1≤i≤k,1≤xi≤n,通过拉格朗日插值多项式公式计算得到多项式fj(x)=(a0+a1x+a2x2+...+ak-1xk-1),直到每个份额音频中存储的所有j个值fj(xi)都被处理,得到j个多项式fj(x),其中拉格朗日插值多项式公式为:(i≠j),其中yj=fj(xi)。例如若多项式为p(x)=a0+a1x+a2x2,现在有p(x0)=y0,p(x1)=y1,p(x2)=y2,则可以确定p(x):
S53、将j个多项式fj(x)的系数[a0,a1,...ak-1]取出并依次排列,去除末尾的0值,得到序列E,其中的元素为{ei};
S54、按顺序取出序列E中的元素{ei},若ei<250,则将ei直接存入序列S;若ei=250,则直接读取下一个元素ei+1,并将数据250+ei+1存入序列S,直到序列E中所有的元素处理完毕;
S55、序列S为原隐藏的秘密音频文件。
图7为本发明的秘密音频恢复过程示意图,可具体解释S52~S55。首先,利用[x
1,f
1(x
1)],[x
2,f
1(x
2)]...[x
k,f
1(x
k)]这k对值和拉格朗日插值多项式公式
(i≠j),其中y
j=f
j(x
j),计算出多项式f
1(x),以此类推,共得到j个多项式f
j(x);其次,分别取出f
j(x)的系数,即将f
1(x)的系数a
0,a
1,...a
k-1排在第一行,将f
2(x)的系数排在第二行,...,将f
j(x)的系数排在第j行,共有jk个元素;再次,按第一行、第二行...第j行的顺序读取并依次排列,此时共有jk个值,去除末尾的0值,生成序列E,其元素为{e
i},包括
,即取出末尾0值后剩下M+amount(A
L≥250)个值;最后,按顺序取出序列E中的元素{e
i},若e
i<250,则将e
i直接存入序列S,若e
i=250,则直接读取下一个元素e
i+1,并将数据250+e
i+1存入序列S,由此恢复出原秘密音频文件s
1,s
2,...s
M,共M个字节。
当然,上面仅列举了利用k个份额音频恢复秘密音频的方法,当份额音频数大于k个时,也可利用相同的方法进行恢复。
实施例1
若待存储的秘密音频的总字节数M为20,待掩盖的秘密音频的每个字节的值如下所示:
3 |
10 |
15 |
17 |
20 |
36 |
39 |
69 |
70 |
55 |
46 |
78 |
90 |
19 |
99 |
160 |
25 |
254 |
253 |
254 |
选取n=6个WAVE格式的掩盖音频,使得取得k=3个份额音频时即可恢复原本的秘密音频文件。
利用本发明的数字音频秘密分享方法将20个字节的秘密音频嵌入到6个掩盖音频中,实现方法如下:
将秘密音频的每个字节小于250的值直接存入序列E,大于或等于250的,则分为250和ei-250存入序列E,因为待隐藏的秘密音频有3个字节的值大于250,则此时序列E中有23个元素。
处理后序列E的结果如下:
因k=3,则可构成8个三维向量β,最后一个元素用0补齐,构成的向量结果如下:
β1=[3,10,15],β2=[17,20,36],β3=[39,69,70],β4=[55,46,78],β5=[90,19,99],β6=[169,25,250],β7=[4,250,3],β8=[250,4,0]。
定义一个2阶多项式fj(x)=(a0+a1x+a2x2)mod251,1≤j≤8,将β中的各个元素分别作为多项式的系数,构成8个多项式fj(x),结果如下:
f1(x)=(3+10x+15x2)mod251;
f2(x)=(17+20x+36x2)mod251
f3(x)=(39+69x+70x2)mod251
f4(x)=(55+46x+78x2)mod251
f5(x)=(90+19x+99x2)mod251
f6(x)=(169+25x+250x2)mod251
f7(x)=(4+250x+3x2)mod251
f8(x)=(250+4x+0x2)mod251
将f1(1),f1(2)...f1(6)的计算结果分别嵌入掩盖音频1,掩盖音频2直到掩盖音频6的低位部分,接着将f2(1),f2(2)...f2(6)的计算结果分别嵌入掩盖音频1,掩盖音频2直到掩盖音频6的低位部分,...,将f8(1),f8(2)...f8(6)的计算结果分别嵌入掩盖音频1,掩盖音频2直到掩盖音频6的低位部分,即:
掩盖音频1 |
掩盖音频2 |
掩盖音频3 |
掩盖音频4 |
掩盖音频5 |
掩盖音频6 |
f1(1) |
f1(2) |
f1(3) |
f1(4) |
f1(5) |
f1(6) |
f2(1) |
f2(2) |
f2(3) |
f2(4) |
f2(5) |
f2(6) |
f3(1) |
f3(2) |
f3(3) |
f3(4) |
f3(5) |
f3(6) |
f4(1) |
f4(2) |
f4(3) |
f4(4) |
f4(5) |
f4(6) |
f5(1) |
f5(2) |
f5(3) |
f5(4) |
f5(5) |
f5(6) |
f6(1) |
f6(2) |
f6(3) |
f6(4) |
f6(5) |
f6(6) |
f7(1) |
f7(2) |
f7(3) |
f7(4) |
f7(5) |
f7(6) |
f8(1) |
f8(2) |
f8(3) |
f8(4) |
f8(5) |
f8(6) |
代入后计算结果为:
掩盖音频1 |
掩盖音频2 |
掩盖音频3 |
掩盖音频4 |
掩盖音频5 |
掩盖音频6 |
28 |
83 |
168 |
32 |
177 |
101 |
73 |
201 |
150 |
171 |
13 |
178 |
178 |
206 |
123 |
180 |
126 |
212 |
179 |
208 |
142 |
232 |
227 |
127 |
208 |
22 |
34 |
244 |
150 |
3 |
193 |
215 |
235 |
2 |
18 |
32 |
6 |
14 |
28 |
48 |
74 |
106 |
3 |
7 |
11 |
15 |
19 |
23 |
存储完毕,可将原秘密音频文件销毁。
下面介绍使用k=3个份额音频将原隐藏的秘密音频恢复的方法,假设剩下份额音频1、2和3,结果如下:
掩盖音频1 |
掩盖音频2 |
掩盖音频3 |
28 |
83 |
168 |
73 |
201 |
150 |
178 |
206 |
123 |
179 |
208 |
142 |
208 |
22 |
34 |
193 |
215 |
235 |
6 |
14 |
28 |
3 |
7 |
11 |
利用已知值y0=f1(1)=28、y1=f1(2)=83、y2=f1(3)=168,x0=1,x1=2,x2=3,通过公式:
代入计算得到: 便可恢复多项式f1(x)=3+10x+15x2,依次类推,恢复出8个多项式:
f1(x)=(3+10x+15x2);
f2(x)=(17+20x+36x2);
f3(x)=(39+69x+70x2);
f4(x)=(55+46x+78x2);
f5(x)=(90+19x+99x2);
f6(x)=(169+25x+250x2);
f7(x)=(4+250x+3x2);
f8(x)=(250+4x+0x2)。
将这8个多项式的系数取出并依次排列,去除队列末尾0值,得到序列E,结果如下:
按顺序取出序列E中的元素{ei},若ei<250,则将ei直接存入序列S;若ei=250,则直接读取下一个元素ei+1,并将数据250+ei+1存入序列S,结果如下:
3 |
10 |
15 |
17 |
20 |
36 |
39 |
69 |
70 |
55 |
46 |
78 |
90 |
19 |
99 |
160 |
25 |
254 |
253 |
254 |
根据以上方法全部恢复出原隐藏的20个字节的秘密音频文件。
以上介绍了数字音频秘密分享方法,将秘密音频隐藏到掩盖音频中,同时介绍了将隐藏的秘密音频进行恢复的数字音频秘密恢复方法。但本发明并不限定于以上实施例,任何未脱离本发明技术方案,即仅仅对其进行本领域普通技术人员所知悉的改进或变更,均属于本发明的保护范围之内。