二维 Arnold 的图像置乱加密及解密——Matlab实现

二维 Arnold 的图像置乱加密及解密(1):RGB图像的处理

基于Arnol变换的图像置乱
Arnold变换是俄国数学家Vladimir I. Arnold提出的一种变换,一幅N ×N的数字图像的二维Arnold
变换定义为:

注意:x,y是原图像的像素坐标,x',y'是变换后的像素坐标。保证|ad-bc|=1,如置换矩阵系数设为a=b=1,c=2,d=3,置换次数n=20,则他们被当作密钥key,用于解密。Arnol变换的图像类型只能是N*N的图片。

RGB图像的二维 Arnold 的图像置乱加密及解密

(1)编写一个arnold.m文件与iarnold.m文件(见上一篇日志《二维 Arnold 的图像置乱加密及解密——Matlab实现(1)》)

(2)图像处理程序

图像加密置乱:

a=imread('flower.jpg'); %取预处理图像

R=a(:,:,1); %取图像的R层像素
G=a(:,:,2); %取图像的G层像素
B=a(:,:,3); %取图像的B层像素
subplot(2,2,1);imshow(a);title('original');
subplot(2,2,2);imshow(R);title('R');
subplot(2,2,3);imshow(G);title('G');
subplot(2,2,4);imshow(B);title('B');
keyR=[5,5,2,7,3];keyG=[3,1,1,2,1];keyB=[6,3,2,4,3]; %分别为RGB三层设计三个不同密钥
aR=arnold(R,keyR);aG=arnold(G,keyG);aB=arnold(B,keyB);%对各层用不同的密钥加密
figure;subplot(2,2,1);imshow(aR);title('aR');%加密后的图像
subplot(2,2,2);imshow(aG);title('aG');
subplot(2,2,3);imshow(aB);title('aB');
aa=cat(3,aR,aG,aB); %各层加密后在合成彩色图像
subplot(2,2,4); imshow(aa); title(' Permuted');%RGB图像加密后的结果
imwrite(aa,'aflower.bmp');

图像解密还原:

b=imread('aflower.bmp'); %取加密后的图像
aR1=b(:,:,1); %取图像R层的像素
aG1=b(:,:,2); %取图像R层的像素
aB1=b(:,:,3); %取图像R层的像素
subplot(2,2,1);imshow(b);title('original');
keyR=[5,5,2,7,3];keyG=[3,1,1,2,1];keyB=[6,3,2,4,3];%由加密方提共的密钥
iaR=iarnold(aR1,keyR);iaG=iarnold(aG1,keyG);iaB=iarnold(aB1,keyB);%对各层进行解密
subplot(2,2,2);imshow(iaR);title('iaR');
subplot(2,2,3);imshow(iaG);title('iaG');
subplot(2,2,4);imshow(iaB);title('iaB');
c=cat(3,iaR,iaG,iaB); %将RGB三层合成彩色图像
figure; imshow(c); title(' Decrypted'); %最后还原的图像
imwrite(c,'jiemi.bmp');

加密的复杂性分析:

(1)置乱度
图像置乱的目的在于打乱图像,使非法获取图像者无法识别图像内容,图像置乱度表明了图像被打乱
的程度,图像经过置乱变换,越“乱”效果越好,保密性越好。从图中可以看出图像Arnold变换迭代次数较
少时,置乱效果不好,但是置乱效果并不随迭代次数的增加而增加,观测Arnold迭代50次和迭代100次的
图像,主观很难判断哪个图像更乱。
衡量图像置乱度图像置乱度的评价标准有观察者的主观标准,也有客观标准。主观标准可以按照人
眼对原始图像和置乱后的图像的视觉感官来判断,依据主观感受来划分等级。客观标准尚无统一的数学
模型,有些研究者提出用原图像中每个像素点的灰度值和周围像素点灰度值的差别来衡量置乱度,如柏森
等人提出的数学模型:

也有的研究者提出用原图像的像素位置移动的远近来表明置乱度。

(2)加密的周期性

经过一定次数的置乱后图像变得杂乱无章,和原始图像已经完全不同,然而对于合法的用户,需要还
原出原始图像。Arnold变换之所以成为一种得到广泛应用的置乱算法,是因为Arnold变换具有周期性,
如果重复的进行Arnold变换,经过一定的次数之后必然会还原出原始图像。Arnold变换的周期性与图像
的大小有关系,但是不成正比。如大小为128 ×128的图像的Arnold变换的周期为96,大小为240 ×240
第3期黄仿元等:基于Arnold变换的图像置乱算法及实现·277·
的图像的Arnold变换的周期为60。表给出了不同N值与Arnold变换的周期T之间的关系。

计算Arnold变换的周期T可以利用一下MATLAB程序来实现。
x = 1; y = 1;N = 128; %N ×N为128 ×128的图像
T = 1;
t = x; x = x + y; y = t + 23 y;
while x~ = 1&y~ = 1;
  T = T + 1;
  if x >N
    x =mod ( x,N) ;
  end
  if y >N
    y =mod ( y,N) ;
  end
  t = x; x = x + y; y = t + 23 y;
end
T %所得的T值即为Arnold变换的周期

二维 Arnold 的图像置乱加密及解密——Matlab实现相关推荐

  1. MATLAB Arnold 的图像置乱加密及解密

    MATLAB Arnold 的图像置乱加密及解密 二维 Arnold 的图像置乱加密及解密(1):RGB图像的处理 基于Arnol变换的图像置乱 Arnold变换是俄国数学家Vladimir I. A ...

  2. 图像加密 关于二维Arnold变换,广义Arnold变换和更一般形式变换的练习(Matlab实现)

    索引 1. 将其离散化,应用到图像变换,假设图像大小为 N × N N\times N N×N, ( m n ) = ( 1 1 1 2 ) ( i j ) m o d N , i , j = 0 , ...

  3. 【图像加密】基于matlab GUI正交拉丁方+二维Arnold置乱图像加密【含Matlab源码 813期】

    ⛄一.正交拉丁方置乱及二维Arnold置乱简介 0 引言 随着通讯技术的飞速发展, 越来越多的领域需要传送数字图像信号, 因此信息的传送安全问题显得越来越重要.通常应用于数字图像通信的两种保护技术为: ...

  4. 【图像加密】正交拉丁方+二维Arnold置乱图像加密【含GUI Matlab源码 813期】

    ⛄一.正交拉丁方置乱及二维Arnold置乱简介 0 引言 随着通讯技术的飞速发展, 越来越多的领域需要传送数字图像信号, 因此信息的传送安全问题显得越来越重要.通常应用于数字图像通信的两种保护技术为: ...

  5. python定位二维码_图像中二维码的检测和定位

    二维码 二维条码/二维码(2-dimensional bar code)是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的:在代码编制上巧妙地利用构成计算机内部 ...

  6. 铁道部称火车票二维码已被强加密

    北京商报讯(记者 丁开艳)火车票上携带的个人信息是否会很容易被软件读取进而导致信息泄露?对此问题,铁道部运输局有关负责人日前回应表示,火车票二维码已经采用强加密技术对旅客身份信息进行统一加密处理,只有 ...

  7. 【二维码识别】灰度+二值化+校正二维码生成与识别【含GUI Matlab源码 635期】

    ⛄一.二维码生成与识别简介 如今,移动互联网技术日新月异,随着5G时代的来临,广泛应用于数据处理过程中的二维码信息安全日益成为人们越来越关注的问题.以QR码为代表的二维码,以其在信息存储.传输和识别技 ...

  8. python 维吉尼亚密码加密和解密

    最近在学密码学,作业里面的加密解密看得脑壳疼,刚好寒假自学了一些python,第一反应就是用python帮我加解密. 菜菜的我写了好久,刚写完,然后同学告诉我维吉尼亚密码有专门的加密解密的库,我一下就 ...

  9. 【图像加密】基于Logistic混沌图像加密与解密Matlab代码

    1 简介 当今时代,科学技术发展迅猛,网络成为人们获取成为人们获取多媒体数字信息的主要渠道,数字图像作为日常交流的主要传输媒介,更是承担着信息传递的重任.保证信息在传播过程中的安全性和完整性便成了目前 ...

最新文章

  1. Linux下修改mysql的root密码后数据库消失怎么处理
  2. Nginx使用uninx socket来连接fastcgi(php)
  3. Newtonsoft.Json高级用法
  4. Tensorflow broadcast 广播机制
  5. Kneser猜想与相关推广
  6. FacetWP 筛选与多条件搜索 WordPress插件
  7. redis结合springboot 无法注入redisTemplate问题
  8. log4j:WARN Please initialize the log4j system properly 问题解决
  9. 自学python好找工作么-Python就业前景好不好?学Python好找工作吗?
  10. [Android] 选项卡组件TabHost
  11. 怎么自己做淘宝优惠券的网站?看完这个你就全懂了
  12. 区块链公司依靠电信主网颠覆汇款行业
  13. 显示器手调对比度算法介绍
  14. AT24C1024读写
  15. 二叉树遍历——先序遍历
  16. hdu6060 RXD and dividing
  17. 传智播客mysql分页的实现_传智播客 2010-03-07 员工信息的AJAX分页实现
  18. kettle使用过程记录(详细)
  19. Flash 应用之我见
  20. 赢鸡:2010年2月网络经典段子集锦

热门文章

  1. python教程110-Python销售订单分析
  2. 深入了解分布式 Session,这篇就够了!
  3. 秋招面试题---京东
  4. python接口测试第二期_使用python进行接口测试(二)
  5. 计算机网络7层协议,计算机网络七层协议
  6. 在html中如何创建空白子网页,在DreamWeaver中创建空白页
  7. 怎样通过历史数据预测未来?
  8. 面试001+自己经历的
  9. 废旧光盘手工小制作_废旧光盘再利用大型台灯制作方法
  10. 【数据结构】队列、环形队列