安企神电脑监控软件 在线试用
扫码咨询客服
安企神电脑监控软件、局域网监控软件
首页
功能介绍
产品简介
下载中心
帮助中心
客户列表
关于安企神

基于Arnold变换的数字图像加密算法

更新时间:2022-10-28 15:43:51


本文简介:目前常用的图像置乱方法有Arnold变换、幻方变换、Tangram算法、Conway游戏、Gray码变换等。Arnold变换算法简单且具有周期性,所以在图像信息隐藏方面得到了很好的应用。下面我就给大家介绍一种基于改进的Arnold变换和扩展的多维Arnold变换并且加入了Logistic混沌映射的图像加密算法。一、关于Arnold变换设有单位正方形上的点(x,y),将点(x,y)变到另一点(x′,

基于Arnold变换的数字图像加密算法

目前常用的图像置乱方法有Arnold变换、幻方变换、Tangram算法、Conway游戏、Gray码变换等。Arnold变换算法简单且具有周期性,所以在图像信息隐藏方面得到了很好的应用。下面我就给大家介绍一种基于改进的Arnold变换和扩展的多维Arnold变换并且加入了Logistic混沌映射的图像加密算法。

一、关于Arnold变换

设有单位正方形上的点(x,y),将点(x,y)变到另一点(x′,y′)的变换为:

基于Arnold变换的数字图像加密算法
此变换称作二维Arnold变换,简称Arnold变换。可见Arnold变换实际上是一种点的位置移动。

对于正方形数字图像,我们可以把其表示成:

基于Arnold变换的数字图像加密算法

式中N是数字图像矩阵的阶数;Fxy表示坐标为(x,y)的像素点的灰度值。将Arnold变换应用在数字图像上,可以通过像素点坐标的改变而改变图像灰度值的布局,把数字图像看作一个矩阵,可由式(3)实现图像像素点的置乱。

基于Arnold变换的数字图像加密算法

式中(x,y)是原图像中像素点的位置坐标;(x′,y′)是变换后该像素点对应的位置坐标。

对于二维平面上的位置变换来说,可以由上述的Arnold变换推广出一类变换,满足“位置移动”的要求。有专家证明了对于如下2×2的变换矩阵:1c,当其元素满足ad-bc=1时,它对平面坐标的变换可作为一种置乱变换,所以可将Arnold变换推广为:

基于Arnold变换的数字图像加密算法

式中参数a,b是正整数;N是数字图像矩阵的阶数。

另外还有专家将Arnold变换推广到高维的情形,相应的变换矩阵为:

基于Arnold变换的数字图像加密算法

对于矢量(x0,x1,…,xN-1)T,做如下变换(x′0,x′1,…,x′N-1)T=AN(x0,x1,…,xN-1)T,这就给定了一种在N维空间上离散网格点的移动方式。

二、图像加密、解密算法

1、图像加密算法

(1)位置置乱

首先产生Arnold变换的参数a,b值的序列,利用简单的logistic混沌映射来实现。

Logistic映射的函数式如:

基于Arnold变换的数字图像加密算法

其中当μ=4时系统处于混沌状态,此时系统产生的序列具有随机性,遍历性,对初值的敏感性,其范围为(0,1)。以K1和K2为初值产生两个混沌序列,其中K1和K2的范围亦为(0,1)。对产生的两个混沌实值序列均从第一百个实值开始取用,组成实值序列X1和X2。

对于实值XK(i)=0b1b2b3b4b5…序列YK由式(7)得到:

基于Arnold变换的数字图像加密算法

然后把Y1(i)和Y2(i)的值分别赋给参数ai和bi。

基于Arnold变换的数字图像加密算法

设方形图像Fxy的大小为N×N,即x∈[1,N],y∈[1,N],利用式(9)对整个图像做变换,变换迭代n1次所得图像记为F′xy:

基于Arnold变换的数字图像加密算法

式中x和y分别表示原图像矩阵像素点的横纵坐标;x′和y′分别表示图像经Arnold变换后图像矩阵的像素点横纵坐标。

将图像F′xy分为B×B块,每块有N2/B2个点。将最终加密的密图F″xy分成N2/B2块,每块有B×B个点,使N2/B2μB2。图像F′xy和位置置乱后图像F″xy的分块矩阵分别记为Block1和Block2,Block1可表示为:

基于Arnold变换的数字图像加密算法

其中(m1,m2)为图像F′xy分块矩阵的块位置坐标,取出F′xy的每个分块,对其进行n2次Arnold变换,每块做变换所取的a,b值都是不同的,如式(11)所示。

基于Arnold变换的数字图像加密算法

式中x=1,2,…,N;y=1,2,…,N;x′=1,2,…,N/B;y′=1,2,…,N/B。然后将Block1中变换后的第一块的像素点分布在Block2中每一块的第一个位置上,将Block1中变换后的第二块的像素点分布在Block2中每一块的第二个位置上,依此类推,直到Block1最后一块的所有像素点分布在Block2中每块的最后一个位置上,该过程由式(12)实现。

基于Arnold变换的数字图像加密算法

式中(m1,m2)为图像F′xy分块矩阵的块位置坐标;x″,y″为加密后图像F″xy的像素点的横纵坐标。至此完成了对图像的位置置乱。

(2)灰度置乱

首先取出位置置乱后的图像F″xy第一列像素点的灰度值,对其进行N维Arnold变换,即

基于Arnold变换的数字图像加密算法

其中L是图像的灰度级,将变换后的列向量放入到密图D的最后一列上,然后取出图像的第二列像素点的灰度值如上做N维的Arnold变换,将结果放入密图的倒数第二列,依此类推,直到将图像的最后一列变换后结果放入到密图的第一列,至此完成了对图像灰度值的一次列置乱。灰度值的行置乱方法与此类似,首先取出列置乱后图像D的第一行像素点的灰度值,对其转置向量做如上Arnold变换,即:

基于Arnold变换的数字图像加密算法

然后将变换结果放入到密图D′的最后一行,依此类推,直到将图像的最后一行像素点的灰度值置乱变换后的结果放入到密图D′的第一行,至此完成对图像灰度值的一次行置乱。可以通过多次行和列的置乱迭代得到较好的加密图像。对于扩展的N维空间Arnold变换其周期计算要复杂得多,而且由于图像不同行不同列可能的灰度值有不同的组合排列,这导致要恢复原始图像需要完成的变换次数很大,而且难以确定,给破译造成了困难。

(3)密钥设计

本算法有3个密钥,将产生混沌序列的初始值K1和K2作为密钥,K1和K2的取值范围为(0,1)。设K3是一个12位的十进制数,如K3=12305678912表示n1=123,n2=056,n3=789,n4=123,即图像位置置乱时整体变换迭代次数为123次,各分块变换迭代次数为56次,图像灰度置乱中行变换迭代次数为789次,列迭代次数为123次。

2、加密算法的步骤

设Fxy是一个N阶的正方形图像,其中x=1,2,3,…,N,y=1,2,3,…,N,则利用该算法对图像Fxy进行文件加密的具体步骤如下:

(1)利用logistic混沌映射产生Arnold变换矩阵的参数a,b的序列,对整个图像做矩阵参数a=a0,b=b0的Arnold变换,并迭代n1次产生图像F′xy;

(2)将图像F′xy分成B×B块,将位置置乱后的密图F″xy分成N2/B2块,每块有B×B个点,取出图像F′xy第一块中的各像素点对应放入矩阵partimage中,对图像块partimage做参数=a1,b=b1的Arnold变换,迭代n2次产生图像块lastpart,并将lastpart中的点依次放入密图F″xy中每个图像块的第一个像素点的位置;

(3)取出图像F′xy第二块中的各像素点对应放入矩阵partimage中,对partimage做矩阵参数a=a2,b=b2的Arnold变换,迭代n2次产生图像块lastpart,并将lastpart中的点依次放入密图F″xy中每个图像块的第二个像素点的位置;

(4)重复步骤3的操作,直到将F′xy中最后一块的所有像素点分布在F″xy中每块的最后一个位置上,至此完成了图像位置置乱过程,得到位置置乱密图F″xy。

(5)对位置置乱后图像F″xy做灰度值的列置乱迭代n3次,得到图像D。然后对列置乱后图像D做灰度值的行置乱迭代n4次。

解密算法与加密算法密钥相同,利用Arnold变换的周期性,以及矩阵除法可实现图像的解密。

小知识之Arnold变换

Arnold变换是一种常用的图像置乱技术。

立即下载试用

基于3DES加密算法的研究

关于加密方法,我们之前有介绍过很多,最近大出风头的秀尔算法和DES、MD5等等一直占据鳌头,今天我们来介绍一个小众的加密算法——就是3DES。

加密算法主要通过软件和硬件两种方式来实现,软件的实现方式具有灵活方便的优点,同时也具有加密速度受限制的缺点。采用硬件实现加密算法是实际应用中必须要考虑到的问题。目前经常采用硬件FPGA等来实现,该种实验方式具有处理速度快的特点,但是对系统的复杂度要求较高。

嵌入式微处理器具有实现简单,系统集成度高,体积小,易于移植等众多优点,因此有必要研发基于嵌入式微处理器的加密算法硬件设备,在此提出一种基于ARM处理器的3DES的硬件实现方法。

3DES算法原理

DES是美国国家标准局颁布的数据加密算法,作为世界范围内的公开加密标准已经使用了20多年。随着计算机处理速度的提高,DES算法面临着一些安全威胁,DES采用56位密钥,曾经有人用穷举搜索法对DES进行过密钥搜索攻击。

近年来也有人提出了差分和线性攻击方案,该方案的实施必须有超高速计算机的支持。为了增强DES算法应对差分或线性攻击的可能性,人们提出了一系列改进方案,采用增加密钥长度是一种可行的途径。

为了增加密钥的长度,可将分组密码进行级联,在不同的密钥作用下,连续多次对一组明文进行加密。其中,最有效的方法是使用三重DES加密,它可使加密密钥长度扩展到128位,在提高加密强度的同时,足以应付目前的各种攻击。

DES是一个分组加密算法,它以64位为分组对数据加密。64位的分组明文序列作为加密算法的输入,经过16轮加密得到64位的密文序列。加密的密钥为64位,实际长度为56位,DES算法的保密性取决于密钥。DES对64位的明文分组进行操作。

首先通过一个初始置换IP,将64位的明文分成各32位长的左半部分和右半部分,该初始置换只在16轮加密过程进行之前进行一次。在经过初始置换操作后,对得到的64位序列进行16轮加密运算,这些运算被称为函数f,在运算过程中,输入数据与密钥结合。经过16轮运算后,左、右两部分合在一起得到一个64位的输出序列,该序列再经过一个末尾置换IP-1,获得最终的加密结果。过程如图1所示。

在每一轮加密过程中,函数厂的运算包括以下四个部分:

首先进行密钥序列移位,从移位后的56位密钥序列中选出48位;

然后通过一个扩展置换将输入序列32位的右半部分扩展成48位,再与48位的轮密钥进行异或运算;

再者通过8个s盒将异或运算后获得的48位序列替代成一个32位序列;

最后对32位序列应用置换P进行置换变换,得到-厂的32位输出序列。将函数厂的输出与输入序列的左半部分进行异或运算后的结果作为新一轮加密过程输入序列的右半部分,当前输入序列的右半部分作为新一轮加密过程输入序列的左半部分。

上述过程重复操作16次,便实现了DES的16轮加密运算。

假设Bi是第i轮计算的结果,则Bi为一个64位的序列,Li和Ri分别是Bi的左半部分和右半部分,Ki是第i轮的48位密钥,且f是实现代换、置换及密钥异或等运算的函数,那么每一轮加密的具体过程为:

以上操作的详细过程如图2所示。

在3DES加密算法中,加密过程用两个不同的密钥K1和K2对一个分组消息进行三次DES加密。首先使用第一个密钥进行DES加密,然后使用第二个密钥对第一次的结果进行DES解密,最后使用第一个密钥对第二次的结果进行DES加密。

解密过程首先使用第一个密钥进行DES解密,然后使用第二个密钥对第一次的结果进行DES加密,最后再使用第一个密钥对第二次的结果进行DES解密。

DES算法的密钥长度是56位,三重DES算法的密钥长度是112位,加密强度显著增强,可以很好地应付各种攻击,目前尚没有可行的攻击方法,应用3DES的加密系统具有很大的实用价值。

本文为收集整理,文章部分观点不代表本站观点,如有侵权或其它问题请反馈客服。https://www.wgj7.com/cjwt/16295.html