索引

  • 传送门
  • 算法改进
  • 算法展望 (初步)

传送门

  1. 文献原文可前往其收录处《混沌映射与比特重组的图像加密》.
  2. 文献的算法流程 (包括算法勘误, 算法整理) 可以参见博文《《混沌映射与比特重组的图像加密》(平萍等)一文的算法流程》.
  3. 对算法背后一些理论的分析可以参见博文《《混沌映射与比特重组的图像加密》(平萍等)一文的算法分析》.
  4. 对算法及其改进形式的仿真实验可以参见博文《《混沌映射与比特重组的图像加密》(平萍等)一文的仿真实验 (基于Matlab)》.
  5. 对算法的性能分析可以参见博文《《混沌映射与比特重组的图像加密》(平萍等)一文的性能分析(一)-- 敏感性分析 (基于Matlab)》 以及 《《混沌映射与比特重组的图像加密》(平萍等)一文的性能分析(二)-- 相关性, 安全性强度, 计算用时分析 (基于Matlab)》.
  6. 原文算法的实现可以参见博文《《混沌映射与比特重组的图像加密》(平萍等)一文的算法实现(基于Matlab)》.

算法改进

  博文《《混沌映射与比特重组的图像加密》(平萍等)一文的算法流程》中的 对原文加密算法的主要勘误 一节的第1点指出了基于原文所给的资料, 只能确定原文的加密 (和解密) 算法适用于尺寸为N×NN \times NN×N的方形图像 (具体原因可参见原博文). 这个限制的形成来源于可逆Henon映射表达式
{x(n+1)=1−ax2(n)+y(n)modN,y(n+1)=x(n)+cmodN.\left\{ \begin{aligned} & x\left( n+1 \right)=1-a{{x}^{2}}\left( n \right)+y\left( n \right)\text{ }\bmod N, \\ & y\left( n+1 \right)=x\left( n \right)+c\text{ }\bmod N. \\ \end{aligned} \right.{​x(n+1)=1−ax2(n)+y(n) modN,y(n+1)=x(n)+c modN.​
中第一, 二式的模数都要求是NNN. 而原文加密算法涉及可逆Henon映射的步骤只有《《混沌映射与比特重组的图像加密》(平萍等)一文的算法流程》中的 整理后的加密算法步骤 中的 第(9)步: 应用可逆Henon映射对8个N×NN \times NN×N比特矩阵进行置乱. 事实上, 当明文图像尺寸为M×NM \times NM×N时, 该步骤中的8个比特矩阵的尺寸也分别为M×NM \times NM×N. 我们指出, 通过添加一些处理, 也可以在M×NM \times NM×N的矩阵上应用同上的可逆Henon映射来置乱.

  任取1个M×NM \times NM×N的比特矩阵Bi(i=1,2,⋯,8){{B}_{i}}\left( i=1,2,\cdots ,8 \right)Bi​(i=1,2,⋯,8)为例来说明操作方法. 当M=NM = NM=N时就是矩阵为方阵的情况, 此时不用再添加其他处理. 当M≠NM\ne NM​=N时, 不妨令N>MN \gt MN>M, 我们欲使用滑动窗口法. 初始构建一个大小为δ×δ=M×M\delta \times \delta = M \times Mδ×δ=M×M的滑动窗口, 设置其滑动步长为δ=M\delta = Mδ=M, 令窗口初始位置在矩阵BiB_iBi​的最左端, 规定窗口滑动方向为向右. 以下步骤的执行基于带余除法的思想.

算法步骤
Step 1
对窗口内的矩阵进行nin_ini​次Henon映射置乱, nin_ini​是对应于该比特矩阵BiB_iBi​的置乱次数.

Step 2
①若窗口的滑动方向为向右, 判断窗口右侧矩阵的列数是否≥δ\ge \delta≥δ. 若是, 将窗口向右滑动δ\deltaδ格, 然后转到Step 1; 否则转到Step 3.
②若窗口的滑动方向为向下, 判断窗口下侧矩阵的行数是否≥δ\ge \delta≥δ. 若是, 将窗口向下滑动δ\deltaδ格, 然后转到Step 1; 否则转到Step 3.

Step 3
①若窗口的滑动方向为向右, 当窗口右侧刚好没有矩阵区域, 即右侧矩阵列数=0=0=0时, 则该比特矩阵BiB_iBi​的置乱完全结束, 退出算法; 当窗口右侧有a×ba \times ba×b的矩阵区域(b>0)\left( b>0 \right)(b>0)时, 置窗口的大小为δ×δ=b×b\delta \times \delta = b \times bδ×δ=b×b, 置窗口的滑动步长为δ=b\delta = bδ=b, 将窗口移动到剩余矩阵区域的最上方, 并规定窗口滑动方向为向下. 转到Step 1.
②若窗口的滑动方向为向下, 当窗口下方刚好没有矩阵区域, 即下方矩阵行数=0=0=0时, 则该比特矩阵BiB_iBi​的置乱完全结束, 退出算法; 当窗口下方有a×ba \times ba×b的矩阵区域(a>0)\left( a>0 \right)(a>0)时, 置窗口的大小为δ×δ=a×a\delta \times \delta = a \times aδ×δ=a×a, 置窗口的滑动步长为δ=a\delta = aδ=a, 将窗口移动到剩余矩阵区域的最左端, 并规定窗口滑动方向为向右. 转到Step 1.

注意, 对任意有限大小的矩阵, 由辗转相除法的思想和性质, 上述算法执行步骤总是有限的.

算法展望 (初步)

以下涉及的"步骤x"均来源于博文《《混沌映射与比特重组的图像加密》(平萍等)一文的算法流程》中的 整理后的加密算法步骤 一节.

(1) 将明文图像III的大小拓展到任意尺寸M×NM\times NM×N的情况, 步骤(1)中的式(1’)应改为
s=∑j=1N∑i=1MI(i,j).s=\sum\limits_{j=1}^{N}{\sum\limits_{i=1}^{M}{I\left( i,j \right)}}.s=j=1∑N​i=1∑M​I(i,j).
式(2’)应改为
μ=2s/M×N×255.\mu ={{2}^{{s}/{M\times N\times 255}\;}}.μ=2s/M×N×255.
步骤(3)中的序列EEE的长度应该为MMM, E={e1,e2,⋯,eM}E=\left\{ {{e}_{1}},{{e}_{2}},\cdots ,{{e}_{M}} \right\}E={e1​,e2​,⋯,eM​}.
步骤(5)中的序列RRR的长度应该为M×NM\times NM×N, R={r1,r2,⋯,rM×N}R=\left\{ {{r}_{1}},{{r}_{2}},\cdots ,{{r}_{M\times N}} \right\}R={r1​,r2​,⋯,rM×N​}.
步骤(7)中的位置响铃PE{{P}^{E}}PE的长度应该为MMM, PE={p1E,p2E,⋯,pME}{{P}^{E}}=\left\{ {{p}_{1}}^{E},{{p}_{2}}^{E},\cdots ,{{p}_{M}}^{E} \right\}PE={p1​E,p2​E,⋯,pM​E}.
原步骤中其他涉及类似N×NN \times NN×N的表述需要的话也改为M×NM \times NM×N. 以下展望均建立在原加密算法已经拓展到适用于任意大小明文图像的情况.

(2)步骤(6)中将像素矩阵中每个像素转换成8位二进制数.
① 这8个数字默认是按横向排列的, 因此得到的矩阵是M×(8×N)M\times \left( 8\times N \right)M×(8×N)的大小. 作为拓展, 也可将这8个数字按照纵向排列, 得到一个(8×M)×N\left( 8\times M \right)\times N(8×M)×N的矩阵.
② 原文默认这8个数字是紧密排列的, 作为拓展, 也可以将这8个数字两两之间隔开NNN个(横向排列的情况下)或者MMM个(纵向排列的情况下)排列, 或者设计其他更加复杂的排列方式.
③ 此外, 该步骤中得到大小为M×(8×N)M\times \left( 8\times N \right)M×(8×N)或者(8×M)×N\left( 8\times M \right)\times N(8×M)×N的矩阵后, 可以考虑再将里面的888个M×NM\times NM×N的比特矩阵旋转合适的角度(不过要保证旋转后的8个小矩阵能够拼接在一起), 如大矩阵为M×(8×N)M\times \left( 8\times N \right)M×(8×N)尺寸, 从左到右每个大小为M×NM\times NM×N的小矩阵可以逆时针旋转90度或者顺时针旋转90度, 每个矩阵旋转的方向可以不一样. 又或者当M=NM=NM=N时, 8个M×N=N×NM\times N=N\times NM×N=N×N的小矩阵各自可以自由地选择逆时针旋转90度, 180度或者270度.

(3)步骤(7)中默认将序列EEE按升序排序得到位置向量PE{{P}^{E}}PE, 作为拓展, 也可以将EEE按降序排序得到位置向量PE{{P}^{E}}PE, 或者将EEE中的奇数索引的数据单独按升序(降序)排列得到P1EP_{1}^{E}P1E​, 偶数索引的数据单独按升序(降序)排列得到P2EP_{2}^{E}P2E​, 再令PE=[P1E,P2E]{{P}^{E}}=\left[ P_{1}^{E},P_{2}^{E} \right]PE=[P1E​,P2E​]或者PE=[P2E,P1E]{{P}^{E}}=\left[ P_{2}^{E},P_{1}^{E} \right]PE=[P2E​,P1E​]得到位置向量PE{{P}^{E}}PE, 或者可以设计更加复杂的排序方式来得到不同的位置向量PE{{P}^{E}}PE.
步骤(8)中位置向量PF{{P}^{F}}PF的产生也可同理进行拓展.

(4)步骤(9)中对第iii个比特矩阵默认按下式计算控制参数ai,ci{{a}_{i}},\text{ }{{c}_{i}}ai​, ci​和迭代次数ni{{n}_{i}}ni​
ai=[fN⋅(i−1)+1×1014]mod28,(1){{a}_{i}}=\left[ {{f}_{N\centerdot \left( i-1 \right)+1}}\times {{10}^{14}} \right]\text{ }\bmod {{2}^{8}}, \tag{1}ai​=[fN⋅(i−1)+1​×1014] mod28,(1)
ci=[fN⋅(i−1)+12×1014]mod28,(2){{c}_{i}}=\left[ {{f}_{N\centerdot \left( i-1 \right)+1}}^{2}\times {{10}^{14}} \right]\text{ }\bmod {{2}^{8}}, \tag{2}ci​=[fN⋅(i−1)+1​2×1014] mod28,(2)
ni=1+([fN⋅(i−1)+1×1014]mod5).(3){{n}_{i}}=1+\left( \left[ {{f}_{N\centerdot \left( i-1 \right)+1}}\times {{10}^{14}} \right]\text{ }\bmod 5 \right).\text{ } \tag{3}ni​=1+([fN⋅(i−1)+1​×1014] mod5). (3)
三个式子均使用了混沌序列FFF里面的第N⋅(i−1)+1N\centerdot \left( i-1 \right)+1N⋅(i−1)+1个值fN⋅(i−1)+1{{f}_{N\centerdot \left( i-1 \right)+1}}fN⋅(i−1)+1​. 作为拓展, 可以让式(1), (2), (3)使用混沌序列FFF中的其他的值, 比如将式(1), (2), (3)改写成
ai=[fN⋅(i−1)+1×1014]mod28,(1’){{a}_{i}}=\left[ {{f}_{N\centerdot \left( i-1 \right)+1}}\times {{10}^{14}} \right]\text{ }\bmod {{2}^{8}}, \tag{1'}ai​=[fN⋅(i−1)+1​×1014] mod28,(1’)
ci=[fN⋅(i−1)+[N2]2×1014]mod28,(2’){{c}_{i}}=\left[ {{f}_{N\centerdot \left( i-1 \right)+\left[ \frac{N}{2} \right]}}^{2}\times {{10}^{14}} \right]\text{ }\bmod {{2}^{8}}, \tag{2'}ci​=[fN⋅(i−1)+[2N​]​2×1014] mod28,(2’)
ni=1+([fN⋅i−1×1014]mod5).(3’){{n}_{i}}=1+\left( \left[ {{f}_{N\centerdot i-1}}\times {{10}^{14}} \right]\text{ }\bmod 5 \right).\tag{3'}ni​=1+([fN⋅i−1​×1014] mod5).(3’)
此外, 若希望对第iii个比特平面迭代Henon映射的最大次数不是5次, 例如改成10次, 20次, 则可以将式(3)中的mod5\bmod 5mod5改写成mod10,mod20\bmod 10,\text{ }\bmod 20mod10, mod20.

(5)步骤(1)中计算Tent混沌系统初始迭代次数kkk的公式是
k=103+(smod103).k={{10}^{3}}+\left( s\text{ }\bmod {{10}^{3}} \right).k=103+(s mod103).
若希望初始迭代的最小次数不是103{{10}^{3}}103, 例如改成500,104500,\text{ }{{10}^{4}}500, 104次, 则可以将上式改写成
k=500+(smod500)或k=104+(smod104).k=500+\left( s\text{ }\bmod 500 \right)\text{ }或\text{ }k={{10}^{4}}+\left( s\text{ }\bmod {{10}^{4}} \right).k=500+(s mod500) 或 k=104+(s mod104).
初始迭代的最小次数其实也是可以作为另外的一个密钥输入到加密算法中。

(6)步骤(10)中默认将各自完成相应次数Henon映射迭代的8个比特矩阵按垂直于比特矩阵平面的方向合并, 作为拓展, 也可以在8个比特矩阵垂直排列的同时, 将其中部分或全部矩阵旋转合适的角度后再合并, 比如由上至下将第1, 3, 5, 7个矩阵逆时针旋转90度, 将第2, 4, 6, 8个矩阵顺时针旋转90度, 然后再合并. 或者当大比特矩阵的大小是M×(8×N)M\times \left( 8\times N \right)M×(8×N)时, 直接将每8个横向相邻像素的灰度值合并, 转化为十进制像素值(当大比特矩阵的大小是(8×M)×N\left( 8\times M \right)\times N(8×M)×N时, 则将每8个纵向相邻像素的灰度值合并, 转化为十进制像素值). 或者设计其他更加复杂的合并方式.

(7) 本文上面介绍的 算法改进 部分, 关于滑动窗口的属性有滑动窗口大小, 滑动窗口移动步长, 滑动窗口每一阶段的初始位置 (这里一个阶段的末尾的标志是窗口再按照规定方向滑动会超出区域范围) , 滑动窗口的滑动方向. 以刚开始的滑动窗口为例:

① 本文上面设置刚开始的滑动窗口大小为min⁡{M,N}×min⁡{M,N}\min \left\{ M,N \right\} \times \min \left\{ M,N \right\}min{M,N}×min{M,N}, 实际上在严格限制滑动窗口为方形窗口的前提下, 可以调整滑动窗口的大小为δ×δ\delta \times \deltaδ×δ, 其中δ∈Z>0,2≤δ≤min⁡{M,N}\delta \in {{\mathbb{Z}}_{>0}},\text{ }2\le \delta \le \min \left\{ M,N \right\}δ∈Z>0​, 2≤δ≤min{M,N}. 需要注意的是窗口大小变小后, 原来的移动策略也需要作出相应更加复杂的调整. 而滑动窗口越小, 一般相应地需要的计算量也会变多.

② 对于滑动窗口移动步长, 作为拓展, 其实不一定要等于滑动窗口的尺寸. 例如滑动窗口的大小为δ×δ\delta \times \deltaδ×δ, 则可以设置移动步长为[δ2]\left[ \frac{\delta }{2} \right][2δ​], 此时移动前窗口I1I_1I1​和移动后的窗口I2I_2I2​的交非空, 但这并不会给算法带来破坏, 只不过交集区域的像素会进行多起码一倍计算量的Henon映射置乱而已, 某种意义上讲, 可以使得算法结构更具复杂性, 更稳定.


③ 对于滑动窗口每一阶段的初始位置, 可以是最左端, 最右端, 最上方, 最下方, 或者是其他非平凡的位置, 只不过初始位置一改, 相应的窗口移动策略也需要作出相应调整.

④ 对于滑动窗口滑动方向, 一般就是向左滑动, 向右滑动, 向上滑动, 向下滑动. 或者可以设计其他更加复杂的滑动方式, 只不过需要设计相应的滑动策略, 以及验证这样的滑动方式和滑动策略能不能让起码绝大部分的像素发生了Henon映射置乱, 确保这样的操作是有效的.

《混沌映射与比特重组的图像加密》(平萍等)一文的算法改进和展望相关推荐

  1. 【图像加密】图像处理之Logistic混沌序列加密

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

  2. 【图像加密】正交拉丁方置乱+混沌图像加密解密【含GUI Matlab源码 636期】

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

  3. 【图像加密】基于matlab GUI正交拉丁方置乱+混沌图像加密解密【含Matlab源码 636期】

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

  4. 基于Logistic混沌序列图像加密

    Logistic映射方程形式如下: X k + 1 = u X k ( 1 − X k ) , ( k = 1 , 2 , 3 - ) X_k+1 = uX_k ( 1- X_k),(k=1,2,3- ...

  5. 【论文摘要】一种基于NSPD-DCT域变参数混沌映射的零水印新方案

    A Novel Zero-Watermarking Scheme Based on Variable Parameter Chaotic Mapping in NSPD-DCT Domain 标题:一 ...

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

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

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

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

  8. 【图像加密】基于matlab GUI正交拉丁方置乱算法图像加解密【含Matlab源码 182期】

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

  9. 【图像加密】基于matlab GUI Logistic+Tent+Kent+Henon图像加密与解密【含Matlab源码 1745期】

    ⛄一.混沌系统简介 0 引言 随着通讯技术的飞速发展, 越来越多的领域需要传送数字图像信号, 因此信息的传送安全问题显得越来越重要.通常应用于数字图像通信的两种保护技术为:数字水印技术和图像加密技术. ...

最新文章

  1. ASP.NET C# 货币转换函数 中文大写金额 英文金额
  2. Amazon Go亮相:消费者无需结账即可完成店面购物
  3. Spring Cloud【Finchley】-01服务提供者与服务消费者
  4. Linux 最常用的脚本,值得学习收藏!
  5. 【视频课】模型部署课程更新!ncnn框架快速实践!
  6. SAP中VLPOD什么意思
  7. python+mysql:实现一千万条数据插入数据库
  8. EXT学习经验分享:深刻理解EXT与服务器端的交互
  9. XCODE 出现 The operation couldn't be completed.(LaunchServicesError error 0.)错误修复
  10. 货车交强险在网上能买吗?
  11. 实现接口与显式实现接口的区别
  12. gps数据解析程序c语言,GPS数据采集分析要点
  13. android 流量计算器,电工计算器v8.0.1_for Android 直装解锁专业版
  14. 51单片机开发板lcd1602不显示字符问题
  15. 常用命令和常用工作地址管理工具
  16. Ubuntu配置adb
  17. 土法炼钢:服务器定时汇报IP地址给我
  18. 重复文件快速查找工具(duplicate file finder plus中文版) v14.0
  19. Codeforces 1129 E.Legendary Tree
  20. 加密交易所的新战场:高频交易

热门文章

  1. 七巧板复原之匹配算法之代码实现
  2. springcloud ribbon实现负载均衡的时候,提示Request URI does not contain a valid hostname: htt...
  3. 有什么毫不起眼却闷声发大财的行业或者生意?
  4. 物有本末、事有终始-访CSDN总裁蒋涛
  5. 17年渣本毕业的我,21年终于进了大厂(薪资和福利真的拉满)
  6. 网络安全——sql注入判断
  7. ▶链路层第三弹◀ 两种信道下的数据链路层【下】广播通信CSMA/CD
  8. 计算机组装员工资,电脑组装员实习体会感想
  9. 基于GLSurfaceView的视频播放器偶现无画面的问题分析
  10. python matplotlib画图及配色