基于加取模和循环左移运算的扩散算法matlab

本文介绍了如何使用MATLAB实现基于加取模和循环左移运算的扩散算法,该算法是对前两种扩散算法的改进。在8位灰度图像中,通过取最低三位进行操作,并讨论了循环左移与右移在加密和解密过程中的应用。文中给出了BitCircShift循环移位函数的实现,并展示了运行结果。
摘要由CSDN通过智能技术生成
  • 基于加取模和循环左移运算的扩散算法
    实际上是对前面两种扩散算法的显著改良。
    在这里插入图片描述
    LSB3表示取数据的最低三位,对于8b的灰度图像,每个像素都是8b的,所以LSB3得到的数据范围始终在0~7,是一个像素点数据循环的有效范围。
    这里注意,除了循环左移,还可以用循环右移,如果加密时用了循环左移,那么解密时应该循环右移。
    实现:
clc;clear;
P=imread('lenna.bmp');P=rgb2gray(P);
iptsetpref('imshowborder','tight');
figure(1);subplot(1,3,1);imshow(P);title('明文图像');
[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+h*K13))+w0;
    x1=x0+(K11+K12+K13+K14)*h/6;
    
    K21=c*x1-y0-x1*z0;K22=c*x1-(y0+K21*h/2)-x1*z0<
  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值