基於頻域的信息加密----傅里葉變換

信息加密中,載體通常是圖像,要隱藏的信息比如說圖片、數字水印、文字。

之前有寫過利用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 number
C = B + m*sth; %m是加權係數或者能量程度,sth 就是要加密的信息
D = ifft2(C);
上述四行代碼做了個簡單的加密工作,關鍵就是第三步,實際上是複數的相加,實際編碼中,還可以考慮加在實部或者虛部,具體看要加密的信息格式和要求了。

同樣,對應的解密工作

A = fft2(imread(image));
B = fft2(imread(D));
C = (B - A)/m; %複數相減
D = ifft2(C)
主要就是複數相減。

這裏有個實例,看着就明白了。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章