关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » 算法设计 »基于混沌的数字图像加密算法

    基于混沌的数字图像加密算法

    2015-05-11 00:00:00 出处:阮一峰的博客
    分享

    Abstract:目前混沌系统与加密技术相结合是现如今最热门的一个课题,虽然有大量的加密算法面世,但是这些加密算法并不成熟,仍然需要进一步的研究。本篇文章采用像素位置置乱变换和像素值替代变换相结合的加密思想,设计出一种基于混沌的数字图像加密算法。引入了整数域上的逆仿射变换,算法中采用二维 logistic 混沌映射相结合的方法,生成多组混沌序列,像素置乱变换与灰度值替换都由这些混沌序列所控制。多混沌序列产生的密钥空间大于单一的混沌序列所产生的密钥空间,因此本篇文章研究的算法加密强度很高。

    1. 虫口模型—Logistic混沌映射。

    Logistic映射是一种可产生的非线性系统,其模型如下所示:

    基于混沌的数字图像加密算法

    基于混沌的数字图像加密算法

    图1 Logistic映射分岔图像

    clear all  
    clc  
    m(1)=0.632;  
    N=196601;  
    m1=[];  
    for u1=2.6:0.02:4  
        for i=1:N-1  
            m(i+1)=u1*m(i)*(1-m(i));  
        end  
        m1=[m1 m];  
    end  
    plot(m1,'k.')

    2. 像素灰度值替代设计图像加密

    设图像(i,j)处的灰度值为 I(i,j),满足 1≤i≤M、1≤j≤N,I′(i,j)表示替换后 I(i,j)在(i,j)处的灰度值。本篇文章中,像素值的替代变换是在空域中进行的,我们设计了两种思路用于实现混沌序列与像素值的替换操作。

    像素替换的公式如下:

    I′(i,j)=((r1(i,j)⊕I(i,j)⊕r2(i,j)+L r3(ij)))modL)mod256

    式中:L表示图像的颜色深度;mod表示求模运算;⊕表示按位异或运算。r1,r2,r3表示的是混沌序列值,替换变换的密钥由r1,r2,r3对应的混沌系统提供,变换可多次进行,如此加密效果更好。设重复次数为n,与混沌模型的初值和参数共同作为这一部分的密钥,增大了密钥的空间,提高了加密强度。若图像很大时,通过上式能够看出r1,r2,r3模版矩阵需要随之增大,如此就大大减小了加密效率。为此,我们可以通过分块处理的方式对图像进行加密,加密效率明显提高。图2是原始图像和加密后的图像:

    基于混沌的数字图像加密算法

    图2 原始图像和加密后的图像

    jiami.m

    function e=jiami(x,data)  
    m(1)=data(1);  
    m1(1)=data(2);  
    m2(1)=data(3);  
    [a,b]=size(x);  
    N=a*b;  
    u1=data(4);  
    %u=4;  
    for i=1:N-1  
        m(i+1)=u1*m(i)*(1-m(i));  
    end  
    m=mode(255*m,256);  
    m=uint8(m);  
    u2=data(5);  
    for i=1:N-1  
        m1(i+1)=u2*m1(i)*(1-m1(i));  
    end  
    m1=mode(255*m1,256);  
    m1=uint8(m1);  
    u3=data(6);  
    for i=1:N-1  
        m2(i+1)=u3*m2(i)*(1-m2(i));  
    end  
    sigma=data(7);  
    m2=mode(255*m2,256);  
    m2=uint8(m2);  
    %n=1;  
    n=data(8);  
    x=double(x);  
    m=double(m);  
    m1=double(m1);  
    m2=double(m2);  
    for i=1:a  
        for j=1:b  
           e(i,j)=m(n)+m1(n);  
           e(i,j)=bitxor(e(i,j),m2(n));  
           e(i,j)=e(i,j)+x(i,j);  
           e(i,j)=mod(e(i,j),255);  
           nn=n+1;  
        end  
    end

    main.m

    x=imread('lena.png');  
    x=double(x(:,:,1));  
    r=input('请输入加密密钥key1:');  
    e=jiami(x,r);  
    subplot(121);  
    imshow(x,[]);  
    title('原始图像');  
    subplot(122);  
    imshow(e,[]);  
    title('加密图像');

    密钥为[0.343 0.432 0.63 3.769 3.82 3.85 0.1 1]八位

    3. 加密图像解密

    解密是加密的逆,公式如下:

    I(i,j)=(r1(i,j)⊕(I′(i,j)+r3(i,j))modL)⊕r2(i,j))mod256

    jiemi1.m

    function kk=jiemi1(e,data)  
    e=double(e);  
    [a,b]=size(e);  
    e=floor(e);  
    m3(1)=data(1);  
    m4(1)=data(2);  
    m5(1)=data(3);  
    u1=data(4);  
    N=a*b;  
    for i=1:N-1  
        m3(i+1)=u1*m3(i)*(1-m3(i));  
    end  
    m3=mode(255*m3,256);  
    m3=uint8(m3);  
    u2=data(5);  
    for i=1:N-1  
        m4(i+1)=u2*m4(i)*(1-m4(i));  
    end  
    m4=mode(255*m4,256);  
    m4=uint8(m4);  
    u3=data(6);  
    for i=1:N-1  
        m5(i+1)=u3*m5(i)*(1-m5(i));  
    end  
    m5=mode(255*m5,256);  
    m5=uint8(m5);  
    sigma=data(7);  
    n=data(8);  
    m3=double(m3);  
    m4=double(m4);  
    m5=double(m5);  
    
    for i=1:a  
        for j=1:b  
            kk(i,j)=m3(n)+m4(n);  
            kk(i,j)=bitxor(kk(i,j),m5(n));  
            kk(i,j)=e(i,j)-kk(i,j);  
            kk(i,j)=mod(kk(i,j),255);  
      nn=n+1;  
        end  
    end

    函数调用形式

    kk=jiemi1(e,r);

    %e为加密图像,r为密钥,为8位

    图3是解密过程:

    基于混沌的数字图像加密算法

    图3 解密图像

    由图可以知道,错误的密钥是解密错误的,只有正确的密钥才能解密出原始图像,而且密钥的精确度非常高,能到小数点后几位。

    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    正版 Windows 11产品密钥怎么查找/查看?

    还有3个月,微软将停止 Windows 10 的更新

    Windows 10 终止支持后,企业为何要立即升级?

    Windows 10 将于 2025年10 月终止技术支持,建议迁移到 Windows 11

    Windows 12 发布推迟,微软正全力筹备Windows 11 25H2更新

    Linux 退出 mail的命令是什么

    Linux 提醒 No space left on device,但我的空间看起来还有不少空余呢

    hiberfil.sys文件可以删除吗?了解该文件并手把手教你删除C盘的hiberfil.sys文件

    Window 10和 Windows 11哪个好?答案是:看你自己的需求

    盗版软件成公司里的“隐形炸弹”?老板们的“法务噩梦” 有救了!

    IT头条

    公安部:我国在售汽车搭载的“智驾”系统都不具备“自动驾驶”功能

    02:03

    液冷服务器概念股走强,博汇、润泽等液冷概念股票大涨

    01:17

    亚太地区的 AI 驱动型医疗保健:2025 年及以后的下一步是什么?

    16:30

    智能手机市场风云:iPhone领跑销量榜,华为缺席引争议

    15:43

    大数据算法和“老师傅”经验叠加 智慧化收储粮食尽显“科技范”

    15:17

    技术热点

    商业智能成CIO优先关注点 技术落地方显成效(1)

    用linux安装MySQL时产生问题破解

    JAVA中关于Map的九大问题

    windows 7旗舰版无法使用远程登录如何开启telnet服务

    Android View 事件分发机制详解

    MySQL用户变量的用法

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。