课程设计任务
随着信息技术的发展,信息安全问题日益成为一个关注的焦点。而隐蔽通信技术可以将信息隐藏在表面上无关紧要的载体中,起到保护信息安全的作用。信息安全问题是当前社会中备受关注的焦点。
为了保护信息安全,人们研发了各种各样的技术手段,其中隐蔽通信技术是一种常用的方法。隐蔽通信技术可以将机密信息隐藏在看似无关紧要的载体中,并通过特定的解密算法等手段从中提取出信息。对于那些需要传递敏感信息的用户来说,这种技术具有很大的实用性。
在隐蔽通信技术中,利用音频信号和图像作为载体的方法是比较常见的。其基本原理是将待传输的数字信息转换成二进制编码形式,然后嵌入到载体的低频分量中。由于人耳和人眼对于高频分量不敏感,因此这种方法可以实现信息的隐蔽传输。针对以上的原理,我们设计了一个程序,可以将待隐藏的消息嵌入到指定路径下的音频文件和图像文件中,并从中提取出隐藏的消息。在实际的应用场景中,这种方法可以用于加密消息、数字水印、版权保护等方面,具有很大的实用价值。
本次课程设计将要求学生独立完成整个程序的设计和实现过程,可以有效提高学生的动手能力和编程技能,同时熟悉Python语言在音频和图像处理中的应用。在最终呈现结果时,也可选绘制音频信号图形和压缩图像等,进一步完善项目。开展这样的课程设计有利于深入理解隐蔽通信技术的原理和实现方法,也能够提高学生的创新能力和解决实际问题的能力。
讲解部分:
第一部分:对消息进行加密,并将消息隐藏在音频信号中
1.使用AES进行加密算法,加密后的消息被嵌入到音频数据中。
使用encrypt_message()函数进行加密,返回加密后的密文;
使用decrypt_message()函数进行解密,返回原始的明文消息。
加密密钥:使用get_random_bytes()函数生成一个长度为16字节的随机二进制数作为AES加密密钥key
在加密过程中,首先使用AES.new(key, AES.MODE_ECB)函数创建AES加密对象,指定加密模式为ECB。
使用pad()函数将明文消息编码成utf-8格式,则需要添加填充数据,使其达到16字节的倍数。
因为在使用AES算法对消息进行加密时,需要确保明文消息长度是16字节的整数倍(AES加密算法数据块大小为16字节)。因此,如果原始消息长度不足16字节,则需要添加填充数据,使其达到16字节的倍数。
然后使用encrypt()方法对填充后的消息进行加密
解密时,创建了一个新的AES加密对象cipher,仍然使用ECB模式。
接着使用decrypt()方法对密文进行解密,得到填充后的消息decrypted_
message,然后使用unpad(decrypted_message, AES.block_size)去掉填充数据;
最后用decode('utf-8')将二进制字符串转换为明文字符串。
- 将消息隐藏在音频信号中 <