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

二维 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');
三个不同密钥
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(aR,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变换的周期

MATLAB Arnold 的图像置乱加密及解密相关推荐

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

    二维 Arnold 的图像置乱加密及解密--Matlab实现 二维 Arnold 的图像置乱加密及解密(1):RGB图像的处理 基于Arnol变换的图像置乱 Arnold变换是俄国数学家Vladimi ...

  2. MATLAB图像置乱混沌加密解密设计

    MATLAB基于GUI图像置乱+混沌加密解密 一.课题介绍 1 混沌的解释 混沌密码学是一种新的密码加密算法,具有简单.高效.安全等优点.混沌密码学是混沌理论的一个重要的应用领域.混沌用于密码学主要依 ...

  3. 基于混沌的图像置乱加密算法及matlab的实现,基于混沌的图像置乱加密算法及MATLAB的实现...

    基于混沌的图像置乱加密算法及MATLAB的实现 提出了一种基于混沌映射的图像置乱加密算法.借助MATLAB6.5软 (本文共3页) 阅读全文>> 数字水印(Digital Watermar ...

  4. Opencv实现图像的加密解密

    1.基础:基于异或操作实现图像加密解密 一般情况下,图像的加密和解密过程是通过按位异或运算实现的.将原始图像与密钥图像进行按位异或,可以实现加密,将加密后的图像与密钥图像再进行按位异或可以实现解密过程 ...

  5. 【图像加密】基于matlab GUI Logistic混沌图像加密与解密【含Matlab源码 1216期】

    ⛄一.混沌图像加密与解密简介 混沌系统图像加密解密理论部分参考链接: 基于混沌系统的图像加密算法设计与应用 ⛄二.部分源代码 %加密程序 function b=jiami(a,s,h) [m1,n1] ...

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

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

  7. python图像加密模块_使用Pycryp的图像加密和解密

    这和加密或解密文本是一样的. 示例 首先导入一些模块:from Crypto.Cipher import AES from Crypto import Random 然后,让我们生成一个键和一个初始化 ...

  8. 【图像加密】图像处理之Logistic混沌置乱加密

    前言:本文原发表在新浪博客http://blog.sina.com.cn/s/blog_b27f71160101h5gi.html,现新浪博客将其搬家至CSDN,原新浪博客停止更新. ①申请搬家后,迟 ...

  9. 计算机能直接识别的算法表示形式,几种常用的图像置乱算法:图像识别算法

    图像置乱技术的目的是将图像噪声化,使得图像的能量尽量地均匀分布.由于图像置乱可选取不同的方法,同样的方法可以设置不同的参数,组合起来的结果会千差万别,因此,将置乱作为图像加密的一种方法从安全的角度考虑 ...

最新文章

  1. EditText中的几个常用属性
  2. JAVA基础9-封装(3)
  3. 教你用R语言分析招聘数据,求职/转行不求人~(附代码、数据集)
  4. Python 笔试集(2):你不知道的 Python 整数
  5. 嵌入式系统中对汉字的处理
  6. 跨页数据传递的两种方式
  7. 4月1号鸿蒙系统上线,4月1日太关键,鸿蒙迎来正式发布前的最后大考,华为将从此起飞...
  8. 数据分析学习笔记—文件处理与pdf处理
  9. “unzip”不是内部或外部命令,也不是可运行的程序或批处理文件
  10. 您的用户账户没有连接到http://192.168.0.112:8080/tfs上的team foundation server的权限
  11. Android中的跨进程调用技术AIDL
  12. 微信小程序开发-新闻简讯demo
  13. mysql执行计划(explain)
  14. 电子设计(2)三极管稳压电路仿真分析
  15. vb.net教程 3-1 窗体编程基础 1
  16. Kafka producer程序本地运行时发送信息失败解决方案
  17. WiFi,你真的还安全吗?
  18. 入门者必看!SharePoint之CAML总结(实战)
  19. 计算机考研专业课各题分占比,考研计算机常见的6个问题!
  20. 基于JAVA在线点餐外卖系统设计与实现 开题报告

热门文章

  1. sql同时查询出明细和汇总
  2. spark HA 模式搭建《加入hbase依赖》 (2018【改进红色字体】详细配置)《转载》
  3. Redis_01_Redis的引入
  4. 微信移动端数据库组件 WCDB 系列(三) — 解析 WINQ 原理
  5. MobileNet实战:tensorflow2.X版本,MobileNetV3图像分类任务(大数据集)
  6. 草根站长赚钱的那些思维
  7. oracle在cmd,cmd 登录oracle
  8. php怎么设置顶部图标,为WordPress主题添加顶部自定义图片功能
  9. :visible.sync弹框显示隐藏
  10. React造轮子:拖拽排序组件「Dragact」