应用混沌序列采用位异或方式加密图像

网友投稿 815 2022-12-02

应用混沌序列采用位异或方式加密图像

应用混沌序列采用位异或方式加密图像

function chaoticXorForImage%混沌系统加密图像的演示%该系统生成一个混沌序列,然后将该混沌序列进行二值化%利用该二值化后的序列与图像每个像素二值化后的值进行异或,达到加密图像的目的%这个处理了好久,开始想到两种方案:%A:将混沌序列以8位为单位转换与加密图像像素异或。%B:将原始图像像素都转换为8位,不足8位,高位补0%发现上述两种难度都大,想到了bitget,bitset%写好后无论如何调试通过后,显示结果都不正确,用几个简单的数据写demo测试%发现错在,将原始图像的最低位与混沌的分块8位后的第一位进行异或了%os(i)=bitset(os(i),9-j,xor(bl((i-1)*8+j),bitget(o(i),9-j)));%上述,应该是9-j,开始使用j,所以异或的位置不正确。%注意:实际上当用混沌序列异或时,这个问题是不影响最终结果,也能讲通的%只是,如果用简单数据调试,和预先不一样而已,需要注意就行了%程序设计:李立宗%2012年3月3日% lilizong【at】Gmailclear;clc;[filename pathname]=uigetfile('*.bmp;*.tiff;*.tif', '读入图像'); os=[pathname filename]; %os原始图像的路径o=imread(os);% figure,imshow(o);%计算原始图像的大小[m n]=size(o);l=zeros(1,m*n*8);bl=zeros(1,m*n*8);l(1)=0.98;for i=2:m*n*8 l(i)=1-2*l(i-1)*l(i-1); if l(i)>0 bl(i)=1; endendos=zeros(m,n);for i=1:m*n for j=1:8% c(i)=bitset(c(i),9-j,xor(a((i-1)*8+j),bitget(b(i),9-j))); os(i)=bitset(os(i),9-j,xor(bl((i-1)*8+j),bitget(o(i),9-j))); endendor=zeros(m,n);for i=1:m*n for j=1:8% c(i)=bitset(c(i),9-j,xor(a((i-1)*8+j),bitget(b(i),9-j))); or(i)=bitset(or(i),9-j,xor(bl((i-1)*8+j),bitget(os(i),9-j))); endendsubplot(1,3,1),imshow(o),title('原始图像');subplot(1,3,2),imshow(os,[]),title('加密图像');subplot(1,3,3),imshow(or,[]),title('解密图像');

补充:

现在发现,写复杂了,直接用bitxor进行位异或即可。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:app小程序搭建(小程序怎么搭建)
下一篇:app能跳转微信小程序吗(app可以跳转小程序)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~