语音加密解密算法研究,仿真和实现-毕业论文 联系客服

发布时间 : 星期日 文章语音加密解密算法研究,仿真和实现-毕业论文更新完毕开始阅读defa696c866fb84ae55c8d0e

河北工业大学2013届本科毕业设计说明书

ms1 = fs/1000; ms20 = fs/50;

q = (ms1:ms20)/fs;%确定倒频刻度 subplot(3,1,3);

plot(q,abs(c(ms1:ms20))); %画倒谱图 legend('倒谱图'); xlabel('倒频(s)'); ylabel('倒频谱幅度');

0.1 波形图幅度0-0.1 00.5时间 (s)11.5 频谱图频谱幅度(dB)1000-100 050010001500200025003000频率(Hz)3500400045005000 倒频谱幅度10000倒谱图50000 00.0020.0040.0060.0080.010.0120.0140.0160.018倒频(s)0.02 图2.2 语音信号变换

(2)在将语音信号读入时matlab就已将连续的语音信号时间离散化并存入文件,要将该时间离散化的信号变成数字化信号还需将各个时间离散化信号值取整,以便于将信号转换成为二进制数据流进行加密解密等一系列操作。又因为matlab记录的文档中语音信号的数值有效取值为[-1.0,1.0],也就是说记录的语音信号的值都为小数,但在小数点后第三位就可以区分出每个数值的大小,因此为了便于转换可先将其扩大1000倍后再取整,这样就可以从十进制整数转换为二进制,使得程序简捷了许

- 9 -

河北工业大学2013届本科毕业设计说明书

多。

f2=ceil(y*1000);%将原语音信号扩大后取整 wavplay(f2,fs);%播放语音文档

变换后的图形如下:

预处理幅度100预处理语音信号波形图0-100 0200预处理语音信号频谱图0-200 0 0.5时间 (s)11.5 预处理频谱幅度(dB)500100015002000预处理倒频谱幅度25003000频率(Hz)3500400045005000 10000预处理语音信号倒谱图50000 00.0020.0040.0060.0080.010.0120.0140.0160.018倒频(s)0.02 图2.3 语音信号预处理图形

将该信号与原语音信号的波形做对比由图2.3与图2.4对比可以看出,经过预处理的语音信号和原语音信号大致相同,即可以用图2.3代替原语音信号,因为经过加密传输解密之后正确恢复的语音信号也只能和图2.3一致,不能再恢复成原语音信号,但是丢失的这些语音数据并不影响用户对声音的判断,这是语音信号能够传输的基础。

3 语音信号加密解密设计

3.1 加密方案设计

语音语音加密原理框图在对语音信号进行预处理、加密解密分析之后,将各个步骤联系起来绘出了语音加密原理框图如下:

- 10 -

河北工业大学2013届本科毕业设计说明书

原语音信号 截取 A/D转换 加密 密钥 恢复语音信号 D/A转换 解密 初始状态值 Logistic映射 参数μ

图3-1 语音加密解密原理框图

3.1.1 加密方案的选用分析

加密方法选用混沌加密方案,基于离散混沌映射的加密系统有Logistic(罗切斯特)映射、Henon(埃农)映射、帐篷映射、kent(肯特)映射。Logistic 映射被公认为是能体现混沌特点的最简单的离散混沌系统映射,它来源于对人口增长模型的研究,其表达式可表示为:

x(n?1)?f(x(n))???x(n)?(1?x(n)),x(n)?[0,1] (3-1)

其中,x(n)、x(n+1)为 Logistic 映射的状态值,μ 为系统参数。

图 3-1 是 Logistic 映射分岔图。当μ超过3时,其解轨迹出现分岔,而且一分再分,分岔点出现得越来越快,当μ=3.569945672 时,进入混沌状态。将 Logistic 映射应用于保密通信时,通常将初始状态值和参数μ作为密钥,但遇到一个周期窗口问题。当μ=1 + 8 = 3.828到 μ = 3.841037时,Logistic 映射存在周期 3 解,紧接着有周期 6、周期 12 等窗口。[6]周期 3窗口及邻接系列窗口如图 2 所示。周期窗口有可能泄露密钥。例如,当 μ= 3.830时,通过对 x(n)进行多次的迭代,最后都是(0.504666?,0.957416?,0.156419?)和(0.494514?,0.958634?,0.156149?),后面再进行迭代也只会出现这三个值,这是典型的短周期,存在一定的安全风险。为了避免周期窗口和问题短周期,采用两个不同参数的 Logistic 映射,两个映射初始值不同,通过动态比较两个映射每次迭代的状态值产生二进制伪混沌序列的方案,取得了一定的效果。在此基础上,提出先让两个映射进行次数不等(在 50 到 100 次之间)的初始迭代,然后再同时迭代[6]的方案,并基于此方案,进行语音采集、压缩、实时加/解密等功能的实现。

- 11 -

河北工业大学2013届本科毕业设计说明书

图3-2 logistic映射分岔图

上图绘出了当x在[0,1]之间取值,?在[2.8,3.99]之间取值时logistic映射分岔图,当μ=3.569945672 时,进入混沌状态。因此将 Logistic 映射应用于保密通信时,通常将初始状态值和参数 μ 作为密钥。 3.1.2 混沌加密方案的具体流程

基于流加密思想,实现对明文的逐位加密。加密过程表示成:

c=c1c2…=es(1)(p1)es(2)(p2)… (3-2)

其中,p={ p1,p2…}是明文位串,{s(1),s(2)…}是伪混沌位序列,c={ c1,c2…}是密文位串。加密函数es(i)进行模2加运算,用伪混沌位序列掩盖明文信息。

在伪混沌位序列产生方法上,采取不同μ值、不同初始状态值的两个不同 Logistic 混沌映射进行迭代,先让它们分别初始迭代m、n次(m≠n),再同时迭代,通过动态比较两个映射每次迭代的状态值,产生二进制伪混沌序列。具体算法是:

①在区间[3.57,4]中,选择两个不同的μ值,分别作为两个映射参数;

②在区间[0,1]中,选择两个不同的实数,分别作为两个映射迭代的初始状态值; ③在区间[50,100]中,选择两个不同的整数m和n,分别作为两个映射的初始迭代次数。两个映射先分别迭代m和n次,得到两个状态值xm和yn,然后再开始同时迭代,每次

迭代后,比较两个映射的状态值。如果两个映射分别表示为f1和f2,如果 f1(xm)> f2(yn),产生二进制位‘1’;否则,产生二进制位‘0’。如此类推,形成伪混沌二进制

- 12 -