图像加密Multiple images encryption based on 3D scrambling and hyper-chaotic system

论文信息:

在这里插入图片描述


abstract

利用混沌理论和elliptic curve Elgamal cryptosystem的概念来生成密文图像和共享密钥。使用多个平面图像生成3D图像,并经历用于生成密码数据的置换和替换阶段。实验结果和分析表明,该算法具有密钥空间大、密码数据统计特性好、抗攻击能力强等特点。


1.Introduction

创新点:

  1. 通过使用多幅图像形成3D立方体结构来加密多幅图像。
  2. 为了防止已知明文攻击的算法,将SHA-512应用于输入图像以生成散列值,该散列值又被用来生成使用椭圆曲线密码算法计算的共享密钥。
  3. 为了在一定百分比的遮挡或噪声攻击下提供更好的图像检索,3D立方体沿所有轴进行排列和旋转,以生成置乱的3D立方体。
  4. 为了减少计算混沌序列的迭代次数,采用了基变换运算。

2. Proposed multiple image encryption scheme

2.1. Creating 3D cube

多个2D平面图像被分割成128×128,并通过堆叠在彼此之上而结合形成立方体。

2.2. Key exchange

SHA-512从3D图像立方体中生成512位散列值h。利用ECC(Elliptic Curve Cryptography)中点乘的概念,用G生成一个点hG(hGx,hGy),其中G是有限域上椭圆曲线的生成元。Ep: y2≡ x3+ax+b mod p
在通信方之间秘密共享为密文hG’,计算为hg’={kg,(hG+kPreceiver)}其中k是512位的随机整数,nreceiver为接收端的私钥,Preceiver为nreceiver与G的点乘(具体计算可见下方)。
点加:P1(x1,y1),P2(x2,y2)
在这里插入图片描述
点加倍:P1(x1,y1)
P3(x3,y3)=P1(x1,y1)+P1(x1,y1)
在这里插入图片描述
点减:P1(x1,y1),P2(x2,y2)
P3(x3,y3)=P1(x1,y1)+P2(x2,-y2)
点乘:用点加和点倍增混合计算kP1.

2.3. Generating chaotic sequence using hyper-chaotic system

超混沌系统
在这里插入图片描述

a ¼ 35; b ¼ 3; c ¼ 12; d ¼ 7 and e 2 ð0:085;0:798Þ
a = 35; b =3; c= 12; d = 7 ; e ∈(0.085,0:798)

2.4. Encryption algorithm

加密过程如下:

  1. 将n个图像转变成128×128×128的立方体(具体组成所需n的大小如表1);在这里插入图片描述

  2. SHA-512 算法从上述立方体中生成哈希值h,利用ECC中的点乘生成一个点hG(hGx,hGy);

  3. 将上述坐标转换成512位二进制,并分成4部分:{(b1;;b128)、(b129;;b256)、(b257;;b384)、(b385;;b512)},再将4部分转变成整数,即{(p;q;r;s)}。

  4. 计算超混沌系统的初始参数(w0,x0,y0,z0):w0 =p/2128; x0 =q/2128; y0 =r/2128; z0 =s/2128;

  5. 由hGx产生的(w0,x0,y0,z0)作为超级混沌系统初始输入,另e取初试输入的平均值。每隔e个距离取值,形成128的混沌序列(xi,yi,zi)。对(xi,yi,zi)排序得到(sxi,syi,szi),对比两者位置变化得到置换表(Px,Py,Pz)。在这里插入图片描述在这里插入图片描述

  6. 置乱:取Pz的值,首先沿z平面对3D图像立方体进行切片置换。将所获得的3D图像立方体沿x平面旋转90°,并使用Px的值沿z平面进行切片置换。类似地,将所获得的3D图像立方体沿y平面旋转90°,并通过沿z平面取Py的值来执行切片排列,从而得到置乱图像SIMG

  7. 扩散:由hGy产生的(w0,x0,y0,z0)作为超级混沌系统初始输入,得到序列(wi,xi,yi,zi),进而得到取值范围(0255)的序列。此处(wi,xi,yi,zi~)的取值间隔为e/100,
    wbyte=(|wi|×1015)256[[2;;7]];
    xbyte=(|xi|×1015)256[[2;;7]];
    ybyte=(|yi|×1015)256[[2;;7]];
    zbyte=(|zi|×1015)256[[2;;7]];
    (以256为基数执行基数转换操作,基数转换后,取位置2到7的值,因为第一位的值多在0~50,导致数值大小不够平均,故去掉。)
    举例 :514181197950012={1;211;165;35;167;108;60}256
    在这里插入图片描述
    再将上述wbyte,xbyte,ybyte,z~byte进行组合得到
    P1=S(wbyte,xbyte)
    P2=S(wbyte,ybyte)
    P3=S(wbyte,zbyte)
    P4=S(xbyte,ybyte)
    P5=S(xbyte,zbyte)
    P6=S(ybyte,zbyte)
    P7=S(P1,P6)
    S混洗操作,如果wbyte中的项目数小于xbyte,则在wn处终止。如果wbyte中的项目数大于xbyte,则终止发生在wn,从xn取值。如果项目的数量在wbyte和xbyte中都相等,则在xn处终止。

  8. 应用所有的Pi生成混沌立方体C,大小128×128×128,有三个通道。

  9. 对SIMG和C的每个像素进行XORed异或操作得到加密的CIMG

2.5. Decryption algorithm

解密过程如下:

  1. 得到加密的CIMG
  2. 从hG’中计算hG。
  3. hGx和hGy通过超混沌系统生成两个混沌序列。
  4. 用hGy根据7.8步中的算法,计算出C。
  5. CIMG与C异或的到SIMG
  6. 利用hGx,得到步骤5中的(Px,Py,Pz)。
  7. 由(Px,Py,Pz)得到逆置换表(RPx,RPy,RPz)。
  8. 用RPy沿着z平面对加扰的3D图像立方体(C)进行解扰。生成的3D图像立方体沿y轴旋转90度。再使用RPx沿z平面解扰,并沿x轴旋转90。最后,利用RPz对z平面进行解扰,得到纯3D图像立方体.
  9. 通过从3D图像立方体中取出2D切片并重新组装,可以从解密的3D图像立方体中获得n个平面图像。

3. Simulation and analysis of the proposed scheme

在这里插入图片描述

3.1. Correlation analysis
3.2. Histogram analysis
3.3. Key space and key sensitivity analysis
3.4. Complexity of the proposed algorithm
3.5. Stability of the algorithm
3.6. Differential attack
3.7. Entropy
3.8. PSNR and SSIM
3.9. Occlusion and salt pepper noise attack
3.10. Execution Speed
3.11. Randomness test

4. Conclusion


关于加密中的扩散操作笔者还未弄清楚具体实现!!!!
### C# 中 DataTable.Compute 方法的使用 `DataTable.Compute` 是用于执行聚合计算的方法,返回一个对象类型的值。此方法接受两个参数:表达式字符串和筛选条件字符串。 #### 参数说明 1. **expression (string)** 表达式的语法类似于 SQL 聚合函数,支持常见的运算符和函数,例如 `Sum`, `Avg`, `Min`, `Max`, `Count` 等[^3]。 2. **filter (string)** 它是一个布尔表达式,定义要应用于数据行的过滤器条件。如果不需要筛选,则可以传递空字符串 (`""`) 或者 `null`。 #### 返回值 该方法返回一个 `object` 类型的结果,表示基于给定表达式和筛选条件的计算结果。 --- ### 使用示例 以下是几个典型的 `Compute` 方法的应用场景: #### 示例 1: 计算某一列的总和 假设有一个名为 `auto` 的 `DataTable`,其中包含汽车的价格信息(字段名 `price`),可以通过以下方式计算价格总和: ```csharp double total = Convert.ToDouble(auto.Compute("SUM(price)", "")); Console.WriteLine($"Total Price of Cars: {total}"); ``` #### 示例 2: 获取某列的最大值 获取同一表格中的最大价格: ```csharp double maxPrice = Convert.ToDouble(auto.Compute("MAX(price)", "")); Console.WriteLine($"Maximum Car Price: {maxPrice}"); ``` #### 示例 3: 基于条件筛选后的平均值 假如只想计算特定品牌汽车(如 `"BrandName"` 列等于 `"Toyota"`)的平均价格: ```csharp double avgToyotaPrice = Convert.ToDouble(auto.Compute("AVG(price)", "BrandName='Toyota'")); Console.WriteLine($"Average Toyota Price: {avgToyotaPrice}"); ``` #### 示例 4: 统计满足条件的数据行数 统计价格大于 50,000 的汽车数量: ```csharp int expensiveCars = Convert.ToInt32(auto.Compute("COUNT(price)", "price > 50000")); Console.WriteLine($"Number of Expensive Cars: {expensiveCars}"); ``` --- ### 注意事项 - 如果表达式或筛选条件不合法,可能会抛出异常。因此,在实际开发中应验证输入的有效性。 - 结果类型始终为 `object`,通常需要显式转换为目标类型(如 `Convert.ToDouble()` 或 `(int)`)。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值