基于频域的信息加密----傅里叶变换

来源:互联网 发布:天融信网络管理系统 编辑:程序博客网 时间:2024/06/05 21:14

信息加密中,载体通常是图像,要隐藏的信息比如说图片、数字水印、文字。

之前有写过利用LSB进行信息隐藏,这是Spatial Domain based,弊端就是抵抗性太差。所以还是得多考虑Frequency Domain based,比如说,傅里叶变换,小波变换,离散余弦变换。

频域添加水印方法:1、采用某种变换手段,将图像变换到频域;2、在频域内,添加信息;3、逆变换,回到图像。

这篇文章介绍如何利用傅里叶变换进行信息加密,傅里叶知识简单温习和理解傅里叶变换,在第二篇中,重点是如何用复数来表示正余弦函数表达式。

环境:MATLAB

重点函数:fft2(),fftshift(),abs(),angle(),real(),imag(),ifftshift(),ifft2().

函数使用示例。

关键知识点:

我们已知,利用复数来表达频谱

假设image size is 100*100

A = imread(image);B = fft2(A); %此时,B的数据类型是复数,complex numberC = B + m*sth; %m是加权系数或者能量程度,sth 就是要加密的信息D = ifft2(C);
上述四行代码做了个简单的加密工作,关键就是第三步,实际上是复数的相加,实际编码中,还可以考虑加在实部或者虚部,具体看要加密的信息格式和要求了。

同样,对应的解密工作

A = fft2(imread(image));B = fft2(imread(D));C = (B - A)/m; %复数相减D = ifft2(C)
主要就是复数相减。

这里有个实例,看着就明白了。




0 0
原创粉丝点击