图像加密的重要性可想而知,每个人都会有自己的小秘密,通过图像加密的方法可以保护自己的照片等的安全。

一般情况下,图像加密可以分为以下几个步骤:

1.选择图像加密算法

2.根据算法获取秘钥

3.根据保存的秘钥解密

图像加密的处理方式多为对图像中的像素点进行处理,有的处理方式不改变灰度直方图的信息(易破解),然后更高级的处理方式使得原来的灰度直方图信息也发生改变(比如变得均衡化了)。

下面介绍自己亲自测试的2种图像加密算法:

1.行列像素点置乱方法,该方法将原图中的像素信息进行了重新排布——置乱。通过一一对应的关系可以恢复原来的图像,此时的秘钥即为行列变换的映射向量Mchange和Nchange。

简单的MATLAB程序如下:

clc,clear all,close all
Lena = imread('Lena512.bmp');
figure;imshow(Lena)
title('原图')
[M,N]   = size(Lena);
Rm      = randsample(M,M)';
Mchange = [1:1:M;Rm];
Rn      = randsample(N,N)';
Nchange = [1:1:N;Rn];

%打乱行顺序
Lena (Mchange(1,:),:) = Lena (Mchange(2,:),:);
figure;imshow(Lena)
title('行加密后图像')
%打乱列顺序
Lena (:,Nchange(1,:)) = Lena (:,Nchange(2,:));
figure;imshow(Lena)
title('列加密后图像')
%列变换还原
Lena (:,Nchange(2,:)) = Lena (:,Nchange(1,:));
figure;imshow(Lena)
title('列解密后图像')
%行变换还原
Lena (Mchange(2,:),:) = Lena (Mchange(1,:),:);
figure;imshow(Lena)
title('解密后图像')

2.基于混沌的图像加密方法,产生2个Logistic混沌序列,改造2个Logistic,得到两个y序列,由yl和y2序列对原图像进行值替代加密。秘钥为混沌系统的初始状态值。

可参考的MATLAB程序如下:

%加密方法,混沌序列
clc,clear all,close all
A=imread('Lena512.bmp'); 
imshow(A); title('原图') 
[M,N]=size(A);%原始图像A的尺寸一MxN 
u1=4;u2=4;x1(1)=0.2;x2(1)=0.7; 
sumA=sum(sum(A));  
k=mod(sumA,256)*1.0/255; 
x1(1)=(x1(1)+k)/2; x2(1)=(x2(1)+k)/2;  
y1(1)=(1/3.1415926)*asin(sqrt(x1(1))); 
y2(1)=(1/3.1415926)*asin(sqrt(x2(1)));  
for i=1:1:M*N-1 %产生2个Logistic混沌序列   
    x1(i+1)=u1*x1(i)*(1-x1(i));   
    x2(i+1)=u2*x2(i)*(1-x2(i)); 
end
for i=1:1:M*N  %改造2个Logistic,得到两个y序列
      y1(i)=(1/3.1415926)*asin(sqrt(x1(i)));   
      y2(i)=(1/3.1415926)*asin(sqrt(x2(i))); 
end
n=1;  
for i=1:1:M   %由yl和y2序列对原图像进行值替代加密     
    for j=1:1:N        
        if mod(n,1)==0           
            k(n)=mod(floor(y1(n)*10^15),256);       
        else
            k(n)=mod(floor(y2(n)*10^15),256);       
        end
        A1(i,j)=bitxor(A(i,j),k(n));  %得到加密像素      
        n=n+1;     
    end
end
figure,imshow(A1);title('混沌加密图像')  %输出得到的加密图像 
n=1;  
for i=1:1:M     
    for j=1:1:N          
        if mod(n,1)==0             
            k(n)=mod(floor(y1(n)*10^15),256);         
        else
            k(n)=mod(floor(y2(n)*10^15),256);         
        end
        A2(i,j)=bitxor(A1(i,j),k(n));  %得到加密像素      
        n=n+1;     
    end
end
figure,imshow(A2);title('解密图像')  %输出得到的解密图像

几种简单的图像加密方法相关推荐

  1. GIT将本地项目上传到Github(两种简单、方便的方法)

    GIT将本地项目上传到Github(两种简单.方便的方法) 一.第一种方法: 首先你需要一个github账号,所有还没有的话先去注册吧! https://github.com/ 我们使用git需要先安 ...

  2. git学习(10):Git的使用--如何将本地项目上传到Github(两种简单、方便的方法)

    将本地项目上传到Github(两种简单.方便的方法) 一.第一种方法: 首先你需要一个github账号,所有还没有的话先去注册吧! https://github.com/ 我们使用git需要先安装gi ...

  3. 几何画板中几种作函数图像的方法

    随着社会的发展,现代教学很多的地方都有了多媒体教学,这就需要一些教学软件的辅助了,几何画板就是其中之一.一些老师在使用几何画板的过程中,常常涉及到函数图象的绘制.因此,很多用户对这方面教程是非常的感兴 ...

  4. aes解密流程图_基于AES和混沌的图像加密方法与流程

    本发明涉及一种信息加密技术,特别是涉及一种图像加密方法. 背景技术: 在军事系统.电子政务.金融系统以及日常生活等领域,每天都会产生大量的图像.为保护这些图像信息内容不被窃取,图像加密技术引起了学术界 ...

  5. matlab 混沌信号,基于五维混沌系统的图像加密方法

    大家都知道混沌信号作为加密信号源,可以应用于图像加密,文本文件加密,语音加密,系统加密等诸多领域,那么接下来,我给大家介绍一种基于五维混沌系统的图像加密方法,该方法不仅可以实现对图像加密,而且与其它加 ...

  6. 总结几种常用的单片机加密方法

    总结前人的经验,摸索着写一点实用的方法,供大家参考:在这里不讲加密算法,只讨论结合软硬件的加密方法,总结了一下大该有以下几种: 一.加密方法 1.烧断数据总线.这个方法我想应不错,但应有损坏的风险,听 ...

  7. 怎么把模糊图片变清晰?试试这几种简单有效的修复方法

    模糊的图片可能是由于摄影技术不佳.设备质量差.运动模糊.手抖等原因导致的.修复模糊的图片可以使其更加清晰.细腻.有质感,让人们更容易欣赏和喜欢.如果您是一名摄影师或设计师,修复模糊的图片可以使您的作品 ...

  8. 几种常用的文件加密方法

    下文是中软通用产品研发中心陈尚义根据http://blog.sina.com.cn/s/blog_611c36a80100gch7.html?tj=1编译. 每个人的电脑硬盘中都会有一些个人隐私或秘密 ...

  9. 四种简单的图像显著性区域特征提取方法-----AC/HC/LC/FT。

    四种简单的图像显著性区域特征提取方法-----> AC/HC/LC/FT. 分类: 图像处理 2014-08-03 12:40 4088人阅读 评论(4) 收藏 举报 salient regio ...

  10. 四种简单的图像显著性区域特征提取方法----- AC/HC/LC/FT。

    四种简单的图像显著性区域特征提取方法-----> AC/HC/LC/FT. 分类: 图像处理 2014-08-03 12:40 4088人阅读 评论(4) 收藏 举报 salient regio ...

最新文章

  1. BZOJ 2818 Gcd 线性欧拉筛(Eratosthenes银幕)
  2. 【教程】Python数据可视化技巧
  3. python使用生成器生成浮点数列表、使用生成器生成(正)负的浮点数列表
  4. Android --- SDK 和 API 是什么意思
  5. unity------------------------------transform.forward与Vector.forward的区别
  6. k8s argo workflow获取登录token的命令
  7. 关闭防火墙和selinux
  8. Buuoj reverse1
  9. Liunx之nginx代理
  10. 3分钟tips:Python中的range与xrange
  11. qt中socket通信流程图_Qt学习 之 Socket通信
  12. iphone静音键失灵_静音键——大部分安卓手机都不爱用的神设计
  13. 短信营销 (php示例)
  14. 简单理解网页源码(HTML源代码)
  15. GenXus进行APP开发-全局颜色设计
  16. html5脑图_使用HTML5技术绘制思维导图
  17. 基于Android平台的小说阅读APP的设计与实现
  18. 在3dmax软件中添加样条的方法和详细步骤
  19. 大三期末前端页面开发论文
  20. R语言使用Metropolis-Hastings采样算法自适应贝叶斯估计与可视化

热门文章

  1. 电子签章助力水电气公共事业服务“一网通办”
  2. xlsxwriter去掉网格线_学习-xlsxwriter模块
  3. 工具包diffmerge
  4. 评分卡模型构建(含泪总结精华!!)
  5. Socket教程(完全版)
  6. uniapp button字体没有垂直居中
  7. JanusGraph 创建索引步骤
  8. php银联支付接口 demo,php版银联支付接口开发简明教程
  9. 基于python的单词查询
  10. 最简单易懂的10堂算法入门课——算法是什么