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

传送门

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

算法改进

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

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

算法步骤
Step 1
对窗口内的矩阵进行 n i n_i ni次Henon映射置乱, n i n_i ni是对应于该比特矩阵 B i B_i Bi的置乱次数.

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

Step 3
①若窗口的滑动方向为向右, 当窗口右侧刚好没有矩阵区域, 即右侧矩阵列数 = 0 =0 =0时, 则该比特矩阵 B i B_i Bi的置乱完全结束, 退出算法; 当窗口右侧有 a × b a \times b a×b的矩阵区域 ( b > 0 ) \left( b>0 \right) (b>0)时, 置窗口的大小为 δ × δ = b × b \delta \times \delta = b \times b δ×δ=b×b, 置窗口的滑动步长为 δ =

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

此账号已停更

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值