matlab数字图像简单的加密方法
图像加密的重要性可想而知,每个人都会有自己的小秘密,通过图像加密的方法可以保护自己的照片等的安全。
一般情况下,图像加密可以分为以下几个步骤:
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('解密图像') %输出得到的解密图像

---------------------
作者:清风徐行
来源:CSDN
原文:https://blog.csdn.net/u013626386/article/details/39736611
版权声明:本文为博主原创文章,转载请附上博文链接!
matlab数字图像简单的加密方法的更多相关文章
- iOS里常见的几种信息编码、加密方法简单总结
一.MD5 MD5编码是最常用的编码方法之一,是从一段字符串中通过相应特征生成一段32位的数字字母混合码. MD5主要特点是 不可逆,相同数据的MD5值肯定一样,不同数据的MD5值不一样(也不是绝对的 ...
- Java实现一个简单的加密解密方法
Crypto是Java语言写的一个简单的加密解密方法. 使用方法: 加密方法 String cipherte=Enande.encrypt(content, pass): 解密方法 Enande.de ...
- Java中常用的加密方法(JDK)
加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容.大体上分为双向加密和单向加密,而双向加密又分为对称加密和非对称加密(有些 ...
- C# 加密总结 一些常见的加密方法
C# 加密总结 一些常见的加密方法 一 散列数据 代码如下: ? private static string CalculateSHA512Hash(string input) { ...
- [转载] Java中常用的加密方法
转载自http://www.iteye.com/topic/1122076/ 加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的 ...
- iOS常见的几种加密方法(base64.MD5.Token传值.系统指纹验证。。加密)
普通加密方法是讲密码进行加密后保存到用户偏好设置中 钥匙串是以明文形式保存,但是不知道存放的具体位置 一. base64加密 base64 编码是现代密码学的基础 基本原理: 原本是 8个bit 一组 ...
- Node.js进阶:5分钟入门非对称加密方法
前言 刚回答了SegmentFault上一个兄弟提的问题<非对称解密出错>.这个属于Node.js在安全上的应用,遇到同样问题的人应该不少,基于回答的问题,这里简单总结下. 非对称加密的理 ...
- iOS 几种加密方法
iOS常见的几种加密方法 普通加密方法是讲密码进行加密后保存到用户偏好设置中 钥匙串是以明文形式保存,但是不知道存放的具体位置 1.base64加密 base64 编码是现代密码学的基础 基本原理: ...
- JAVASCRIPT加密方法,JS加密解密综述(7种)
一:最简单的加密解密 对于JAVASCRIPT函数escape()和unescape()想必是比较了解啦(很多网页加密在用它们),分别是编码和解码字符串,比如例子代码 用escape()函数加密后变为 ...
随机推荐
- mycli工具mysql命令自动补全
简介 MyCli 是一个 MySQL 的命令行客户端,可以实现自动补全和语法高亮.MyCli 也可用于 MariaDB 和Percona. 项目地址:http://mycli.net/ 安装 pip安 ...
- Python 源代码代码打包成 whl 文件
1.检查 python setup.py check 2.打包 python setup.py sdist bdist_wheel || true
- redis安装及性能测试
Redis是一个开源的使用ANSI C语言编写.遵守BSD协议.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库.通常被称为数据结构服务器,因为值(value)可以是 字符串(Stri ...
- Latex — 写作编译过程中遇到问题记录与总结
最近在训练的时候,又开始用Latex进行写作.碰到了很多问题,将问题进行记录与总结. 一.输出中文的问题 由于写作的时候用的是中文,而之前用的是英文,故碰到的第一个问题就是中文的问题.我之前下的是Wi ...
- Mybatis Log plugin 破解!!!
前言 今天重新装了IDEA2020,顺带重装了一些插件,毕竟这些插件都是习惯一直在用,其中一款就是Mybatis Log plugin,按照往常的思路,在IDEA插件市场搜索安装,艹,眼睛一瞟,竟然收 ...
- 滴滴AI Labs斩获国际机器翻译大赛中译英方向世界第三
桔妹导读:深耕人工智能领域,致力于探索AI让出行更美好的滴滴AI Labs再次斩获国际大奖,这次获奖的项目是什么呢?一起来看看详细报道吧! 近日,由国际计算语言学协会ACL(The Associati ...
- day42:HTML标签和CSS选择器
目录 1.HTML 1.1 文档结构 1.2 head标签 1.3 body标签 1.3.1 h1-h6标签 1.3.2.br标签:换行 1.3.3.hr标签:一行横线 1.3.4 a标签:超链接标签 ...
- EXCEL 引用autocad vba,自动加载其类型库
Sub AutoADDAutoCADTypeLib() Dim Ref As Variant Dim hasAutoTypeLib As Boolean, hasAXDBLib As Boolean, ...
- Unity - NGUI - 优化ScrollView的一些心的
ScrollView是NGUI非常好用的一个内置组件,但是效率不好,当子物体过多的时候,一旦开始拖动就帧数狂掉,我目前有3个解决思路: 1. NGUI自带的Example 8 - Scroll Vie ...
- Fastlane- app自动编译、打包多个版本、上传到app store
Fastlane是一套使用Ruby写的自动化工具集,用于iOS和Android的自动化打包.发布等工作,可以节省大量的时间. Github:https://github.com/fastlane/fa ...