(图像加密)基于异或运算的扩散处理(matlab)

基于异或运算的扩散处理

一种基于二进制的逻辑运算,它的结果为1的条件是两个二进制位不相同。在密码学中,异或运算被广泛应用于加密算法中的扩散处理。

扩散处理是指将明文中的每一个比特位都与密钥中的比特位进行运算,以达到加密的目的。异或运算是一种简单而有效的扩散处理方式,它可以将明文中的每一个比特位都与密钥中的比特位进行异或运算,从而产生密文。

异或运算的特点是简单、快速、可逆和不可逆它可以用于加密和解密过程中的扩散处理,也可以用于数字签名和消息认证等过程中的数据转换。

在实际应用中,基于异或运算的扩散处理通常会与其他加密算法结合使用,以提高加密的强度和安全性。例如,在DES加密算法中,异或运算被用于对明文进行初步的扩散处理,然后再进行其他复杂的加密操作。

clc;clear;%基于异或运算的扩散处理
P=imread('8888.jpeg');P=rgb2gray(P);
iptsetpref('imshowborder','tight');
figure(1);imshow(P);
[M,N]=size(P);P=double(P);

n = 2 * M * N;
h=0.002;t=800;a=10;b=8/3;c=28;r=-1;x0=1.1;y0=2.2;z0=3.3;w0=4.4;
s=zeros(1,n);
for i=1:n+t
    K11=a*(y0-x0)+w0;K12=a*(y0-(x0+K11*h/2))+w0;
    K13=a*(y0-(x0+K12*h/2))+w0;K14=a*(y0-(x0+K13*h))+w0;
    x1=x0+(K11+K12+K13+K14)*h/6;
    K21=c*x1-y0-x1*z0;K22=c*x1-(y0+K21*h/2)-x1*z0;
    K23=c*x1-(y0+K22*h/2)-x1*z0;K24=c*x1-(y0+K23*h)-x1*z0;
    y1=y0+(K21+K22+K23+K24)*h/6;
    K31=x1*y1-b*z0;K32=x1*y1-b*(z0+K31*h/2);
    K33=x1*y1-b*(z0++K32*h/2);K34=x1*y1-b*(z0+K33*h);
    z1=z0+(K31+K32+K33+K34)*h/6;
    K41=-y1*z1+r*w0;K42=-y1*z1+r*(w0+K41*h/2);
    K43=-y1*z1+r*(w0+K42*h/2);K44=-y1*z1+r*(w0+K43*h);
    w1=w0+(K41+K42+K43+K44)*h/6;
    
    x0=x1;y0=y1;z0=z1;w0=w1;
    if i>t
        s(i-t)=x1;
        if mod((i-t),3000)==0
            x0=x0+h*sin(y0);
        end
    end
end

S=mod(floor(s*pow2(16)),256);
S1=S(1:M*N);S2=S(M*N+1:2*M*N);B=zeros(M,N);C=zeros(M,N);
tic;A=P(:);B0=0;B(1)=bitxor(bitxor(B0,S1(1)),A(1));
for i=2:M*N
    B(i)=bitxor(bitxor(B(i-1),S1(i)),A(i));
end
C0=0;C(M*N)=bitxor(bitxor(C0,S2(M*N)),B(M*N));
for i=M*N-1:-1:1
    C(i)=bitxor(bitxor(C(i+1),S2(i)),B(i));
end
C=reshape(C,M,N);toc;
figure(2);imshow(uint8(C));

A=C(:);D=zeros(M,N);E=zeros(M,N);
D0=0;D(M*N)=bitxor(bitxor(D0,S2(M*N)),C(M*N));
for i=M*N-1:-1:1
    D(i)=bitxor(bitxor(C(i+1),S2(i)),C(i));
end
E0=0;E(1)=bitxor(bitxor(E0,S1(1)),D(1));
for i=2:M*N
    E(i)=bitxor(bitxor(D(i-1),S1(i)),D(i));
end
E=reshape(E,M,N);figure(3);imshow(uint8(E));

效果:

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值