⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hiding.m

📁 实现信息隐藏
💻 M
字号:
%%%%%%%%%
%每个汉字需要用16位二进制表示,占据16比特空间
I='河北工业大学,信息学院,电技';%里面字符可随意嵌入,个数最好不要超过50
Ip=double(I);
a=size(Ip,2);
S16=zeros(a,16);
for i=1:a
    k=1;
    for j=1:16
    S16(i,k)=bitget(Ip(i),k);
    k=k+1;
    end
end
%%%%%%%%%%%%%%%%%%%%%产生加密混沌序列
u=3.6;a1=0.1;
A=zeros(1,a*16);
A(1)=a1;
k=1;
for i=1:a*16-1
    A(k+1)=u*A(k)*(1-A(k));
    k=k+1;
end
A=reshape(A,a,16);
%%%%%%%%%%%%%%%%%%%%%
for i=1:a
    for j=1:16
        if A(i,j)>0&A(i,j)<=0.5
            A(i,j)=0;
        else
            A(i,j)=1;
        end
    end
end
%%%%%%%%%%%%%%%%%%%%
%对汉字编码进行加密
for i=1:a
    for j=1:16
        S16(i,j)=bitxor(S16(i,j),A(i,j));
    end
end
%%%%%%%%%%%%%%%%%%%
C=S16;
%%%%%%%%%%%%%%%%%%%%%%嵌入
G=imread('lena.bmp');
figure(1)
imshow(G)
title('原始图像')
G7=wpm7(G);G6=wpm6(G);G5=wpm5(G);G4=wpm4(G);G3=wpm3(G);G2=wpm2(G);G1=wpm1(G);G0=wpm0(G);
G7=double(G7);G6=double(G6);G5=double(G5);G4=double(G4);G3=double(G3);G2=double(G2);G1=double(G1);G0=double(G0);
rand('state',5);
row=round(255*rand(1,a));%随机选择嵌入行
rand('state',7);
col=round(255*rand(1,16));%随机选择嵌入列
for i=1:a
    for j=1:16
    G4(row(i),col(j))=C(i,j);
    end
end
%%%%%%%%%%%%%%%%%%%
T7=G7;T6=G6;T5=G5;T4=G4;T3=G3;T2=G2;T1=G1;T0=G0;
[m,n]=size(G);
for i=1:m
    for j=1:n
        T(i,j)=2^7*T7(i,j)+2^6*T6(i,j)+2^5*T5(i,j)+2^4*T4(i,j)+2^3*T3(i,j)+2^2*T2(i,j)+2^1*T1(i,j)+2^0*T0(i,j);
    end
end
T=uint8(T);
figure(2)
imshow(T)%显示嵌入水印图像
title('嵌入水印图像')
imwrite(T,'shuiyin.bmp')
%%%%%%%%%%%%%%%%%%%%%%% 提取水印
Tp=imread('shuiyin.bmp');
Tp7=wpm7(Tp);Tp6=wpm6(Tp);Tp5=wpm5(Tp);Tp4=wpm4(Tp);Tp3=wpm3(Tp);Tp2=wpm2(Tp);Tp1=wpm1(Tp);Tp0=wpm0(Tp);
Tp7=double(Tp7);Tp6=double(Tp6);Tp5=double(Tp5);Tp4=double(Tp4);Tp3=double(Tp3);Tp2=double(Tp2);Tp1=double(Tp1);Tp0=double(Tp0);
rand('state',5);
row=round(255*rand(1,a));%选择提取行
rand('state',7);
col=round(255*rand(1,16));%选择提取列
for i=1:a
    for j=1:16
    H(i,j)=Tp4(row(i),col(j));
    end
end%得到秘密信息
%%%%%%%%%%%%%%%%%%%%%产生解密混沌序列
u=3.6;a1=0.1;
A=zeros(1,a*16);
A(1)=a1;
k=1;
for i=1:a*16-1
    A(k+1)=u*A(k)*(1-A(k));
    k=k+1;
end
A=reshape(A,a,16);
%%%%%%%%%%%%%%%%%%%%%
for i=1:a
    for j=1:16
        if A(i,j)>0&A(i,j)<=0.5
            A(i,j)=0;
        else
            A(i,j)=1;
        end
    end
end
%%%%%%%%%%%%%%%%%%%%%
%对汉字编码进行解密
for i=1:a
    for j=1:16
        H(i,j)=bitxor(H(i,j),A(i,j));
    end
end
%%%%%%%%%%%%%%%%%%%
for i=1:a
HH(i)=2^0*H(i,1)+2^1*H(i,2)+2^2*H(i,3)+2^3*H(i,4)+2^4*H(i,5)+2^5*H(i,6)+2^6*H(i,7)+2^7*H(i,8)+2^8*H(i,9)+2^9*H(i,10)....
    +2^10*H(i,11)+2^11*H(i,12)+2^12*H(i,13)+2^13*H(i,14)+2^14*H(i,15)+2^15*H(i,16);
end
HHH=char(HH)%显示水印信息,见指令窗

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -