求x减3x减三的绝对值等于多少加x减2x减三的绝对值等于多少加x+1x减三的绝对值等于多少加x加2x减三的绝对值等于多少的最小值,求此时x

本发明涉及医学图像加密处理技术领域,更具体的,涉及一种基于混沌映射和选择性signcryption的dicom图像非对称加密方法及系统。背景技术:医学影像学,是研究借助于某种介质(如x射线、电磁场、超声波等)与人体相互作用,把人体内部组织器官结构、密度以影像方式表现出来,供诊断医师根据影像提供的信息进行判断,从而对人体健康状况进行评价的一门科学,包括医学成像系统和医学图像处理两方面相对独立的研究方向。医学图像常见的格式有dicom、mosaic、analyse、nifti等等。kanso团队在2015年提出全面和特定的基于混乱的图像加密组合适用于医学图像加密应用。提出的模型由几步骤组成,其中一个步骤由两个阶段组成,一个洗牌阶段,一个覆盖阶段。这两个阶段是基于区块的和利用混沌的cat映射来重新排列和覆盖信息图像。仿真结果显示了该方案的优越性,证明了该方案对密码分析攻击的安全性,从而肯定了该方案用于连续安全图像通信的合理性。moreshmukhedkar等人2015年的曾建议使用blowfish算法完成图像加密,由于该算法具有速度快、执行力强、速度快、基本、位可控等特点,适用于图像隐藏最小有效位(lsb)算法。为了提高安全性,提出了一种图像加密与图像加密和图像隐藏相结合的混合方法。在保护重要数据时,随机数是密码基元质量的关键部分,它由加密密钥表示。数字医学图像的处理和传输存在一些安全问题,因此保持图像的完整性和保密性是非常重要的。医学图像的验证主要是为了保证存储在信息系统中的医学数据的完整性和安全性。医学图像不同于普通图像,其像素通常为12位且包含负数值,目前的医学图像加密大部分都是置乱和置换分别处理原始的医学图像从而生成加密图像,或者是是使用双重加密方法先对图像加密一次,然后继续对后续的图像进行签密处理。然而,该方法图像加密方法加密效率不高,以及在加密后的安全性不够强,容易遭到破解。公开号为cn104468489a的中国发明专利于2015年3月25日公开了一种云端录像平台的档案安全保密机制,对图像文件案本文进行有效的保密,大幅提高图像文件案本文的保密性,使图像文件案除用户外任何人都不能获得,能有效防止云端录像平台的图像文件案外泄。然而,该方法亦并不适用于对医学图像的加密。技术实现要素:本发明为克服现有的图像加密技术存在加密效率不高、安全性不强且不适用于医学图像的技术缺陷,提供一种基于混沌映射和选择性signcryption的dicom图像非对称加密方法及系统。为解决上述技术问题,本发明的技术方案如下:基于混沌映射和选择性signcryption的dicom图像非对称加密方法,包括以下步骤:s1:输入图像序列并生成密钥;s2:对图像序列进行多级小波变换处理,将系数序列整体上移至非负域,获取非负小波系数;s3:使用密钥生成混沌系统初始值和间歇参数,构建并对广义双峰混沌系统和三维交织混沌系统进行初始化;s4:利用广义双峰混沌系统生成加密序列和选点序列,利用三维交织混沌系统生成置乱序列;s5:根据加密序列对小波系数进行混沌加密,直至将图像像素控制在0~4095;s6:确定ecc参数,根据选点序列选出部分混沌加密后的小波系数进行ecc加密,同时对原系数序列的md5hash进行ecc签名,两步合并进行signcryption,构成ecc签密;s7:对ecc签密后的图像根据置乱序列进行比特级置乱,生成加密图像。上述方案中,通过对dicom图像进行混沌和ecc双重加密处理,提高了图像加密的安全性;通过应用signcryption技术对图像进行数字签名,保证加密图像的安全性和完整性;同时,对图像进行多级小波变换选取部分数据进行非对称性加密的形式,有效地提高了加密效率,并通过比特级混沌置乱保证部分加密的影响扩展至整个图像。其中,所述步骤s1具体为:输入原始明文图像,对原图像进行sha256哈希函数生成一个256位ikey,同时使用一个外部256位比特串作为ekey;密钥由ikey和ekey共512位组成。其中,所述步骤s2具体为:采用无损的legall53整型小波对图像序列进行3层小波变换,将图像序列整体上移至非负域,同时获取小波系数。其中,在所述步骤s3中,所述生成混沌系统初始值和间歇参数的过程具体为:s301:将ekey分割为8组32位的块,即:ekey={ek0,ek1,…,ek7},eki={eki,0,eki,1,…,eki,31}同样,将ikey分割为8组32位的块,即:ikey={ik0,ik1,…,ik7},iki={iki,0,iki,1,…,iki,31}s302:计算求和项se和si:其中,eki,j表示ekey中第i块的第j位的值;iki,j同理;s303:计算初始值和间歇参数:1)广义双峰混沌系统初始值u0:2)三维交织混沌系统初始值x0、y0、z0及参数λ、k1、k2、k3:3)混沌加密参数α:其中,在所述步骤s3中,所述广义双峰混沌系统fgdh(u,r,c)具体表达式为:un+1=r(un-c)2(c2-(un-c)2)=fgdh(u,r,c)确定广义双峰函数参数r、c和初始值u0;其中,根据广义双峰函数的性质,当泛化参数c取得不同值时,有着不同的能使x混沌的参数r取值范围;同时,将初始值u0代入广义双峰函数中进行迭代,对广义双峰混沌系统进行初始化,消除初值的影响,新的初值依然记为u0;将u0、参数r、c代入fgdh(u,r,c)中,得到混沌序列{un};所述三维交织混沌系统具体表达式为:其中,0<λ<3.999,|k1|>33.5,|k2|>37.9,|k3|>35.7;将计算得到的初始值x0、y0、z0代入三维交织混沌系统函数组中进行迭代,对三维交织混沌系统进行初始化,新的初值依然记为x0、y0、z0;将初始向量(x0,y0,z0)和参数向量(λ、k1、k2、k3)代入三维交织混沌系统函数组中,生成混沌序列{xn}、{yn}、{zn}。其中,在所述步骤s4中,所述加密序列k生成过程具体为:设输入图像规格size为m×n;根据混沌加密参数α设定加密序列初值为:k[0]=[fgdh(α,r,c)*1014]mod4096令序列n的初值为广义双峰混沌系统初值u0经初始化后的值,具体表示为:n[0]=gdh_init(u0)其中,gdh_init表示初始化的广义双峰混沌系统;接着进行计算,具体为:fori=1,2,...,size-1:i.n[i]=fgdh(n[i-1],r,c)k[i]=[(k[i-1]+n[i]×1010mod4096)mod4096]其中,得到的序列k即为加密序列。其中,在所述步骤s4中,所述置乱序列生成过程具体为:获取维度变换大小a×b×c′;利用所述三维交织混沌系统,经过初始后,迭代t=max(a,b,c′)次,得到含有t个三维随机数向量的向量组v={v0,v1,λvt-1},vi={vi,0,vi,1,vi,2};令:l={v0,0,v1,0,…,va-1,0}w={v0,1,v1,1,…,vb-1,1}h={v0,2,v1,2,…,vc′-1,2}对l、w、h分别进行快速排序,得到l′、w′、h′;根据l′与l、w′与w、h′与h各元素的位置变化,得到三个置乱位置一维向量x、y、z,具体为:fori=0,1,2,...,a-1:x[i]=get_position(l[i],l′)其中,get_position(x,b)表示序列b中元素x的位置;同理得到y[j]、z[k],得到一维向量x、y、z;最后根据x、y、z生成三维置乱序列,具体表达式为:fori=0,1,2,...,a-1:forj=0,1,2,...,b-1:fork=0,1,2,...,c′-1:p[i][j][k]=(x[i],y[j],z[k])其中,p为置乱序列。其中,在所述步骤s4中,所述维度变换大小具体为:获取原维度size为m×n×d,其中,m×n分别是图像的长和宽,d为图像像素位数;设m≥n≥d;缩放m×n,使得m′、n′接近,具体为:fori=1,2,3...:n′=n×i其中,m′更新为对取整;计算参数i′,使|m′-n′|最小,记录此时的m'、n';接着,缩放m'×n'和d,使和d接近,具体为:forj=1,2,3...:d′=d×j2计算参数j',使最小,记录此时的m”、n”和d';若将维度设定为m”×n”×d',则会有s=m×n×d-m”×n”×d'位溢出,设最短边c=min(m″,n″,d′),a、b为其它两边,为了尽可能减少溢出,还需要对c进行扩充,扩充长度令c'=c+k,则最终确定维度变换大小为a×b×c'。其中,设在步骤s4中,根据输入图像大小m×n生成的加密序列为k,则所述步骤s5具体为:s51:将小波变换后的图像序列转化为(m×n,1)的像素流l,即小波系数利用加密序列k进行初步加密,加密公式为:s52:检查图像像素的取值范围,若存在像素取值大于12位,则对于大于12位的点记录其位置并根据异常点数量生成新的加密序列,新加密序列的每个值与其对应的异常点具有相同的位数且最高位为1;对这些异常点与新加密序列进行步骤s51的加密处理,循环此步骤直至所有点都在0~4095之间,输出像素流l”;s53:对像素流l”进行第二次加密,加密公式为:其中,当i=0时,s为0~4095之间的任何一个随机数;最后得到序列c;s54:将步骤s53中得到的序列c转化为(m×n)完成混沌加密过程。其中,在所述步骤s7中,将ecc签密后的序列进行12位比特化,序列中每个元素均比特化后组成比特流l,设图像长宽为m和n,则比特流长度为m×n×12;根据维度变换大小a×b×c′对比特流l进行截取,具体表示为:l1=[l0,l1,…,la×b×c′-1];l2=[la×b×c′,la×b×c′+1,…,lm×n×12];并将l1转化为(a×b×c′)的三维矩阵cube,计算比特流l2长度r=m×n×12-a×b×c′;对cube根据置乱序列p根据置乱序列,具体表示为:fori=0,1,2,...,a-1:forj=0,1,2,...,b-1:fork=0,1,2,...,c′-1:s=p[i][j][k]cube′[i][j][k]=cube(s[0],s[1],s[2])将置乱结果cube′恢复为比特流l1′,计算将l2中的元素与l1每隔h个元素中的随机一个进行置换,得到比特流l2′;完成后得到l1′、l2′,再将两者拼接起来形成最终比特流,再将比特流转换回(m×n,12),将其元素恢复为12位的像素,形成像素流后再转换回(m×n)大小,至此比特级置乱完成,生成加密图像。与现有技术相比,本发明技术方案的有益效果是:本发明提供一种基于混沌映射和选择性signcryption的dicom图像非对称加密方法通过对dicom图像进行混沌和ecc双重加密处理,提高了图像加密的安全性;通过应用signcryption技术对图像进行数字签名,保证加密图像的安全性和完整性;同时,对图像进行多级小波变换选取部分数据进行非对称性加密的形式,有效地提高了加密效率,并通过比特级混沌置乱保证部分加密的影响扩展至整个图像。附图说明图1为本发明所述方法流程示意图;图2为一实施例中选点序列生成图;图3为一实施例中解密流程图;图4为一实施例中椭圆曲线加密解密流程示意图;图5为一实施例中椭圆曲线签密流程程序实现图。具体实施方式附图仅用于示例性说明,不能理解为对本专利的限制;为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。下面结合附图和实施例对本发明的技术方案做进一步的说明。实施例1如图1所示,基于混沌映射和选择性signcryption的dicom图像非对称加密方法,包括以下步骤:s1:输入图像序列并生成密钥;s2:对图像序列进行多级小波变换处理,将系数序列整体上移至非负域,获取非负小波系数;s3:使用密钥生成混沌系统初始值和间歇参数,构建并对广义双峰混沌系统和三维交织混沌系统进行初始化;s4:利用广义双峰混沌系统生成加密序列和选点序列,利用三维交织混沌系统生成置乱序列,混用两种混沌系统来提高加密的安全性;s5:根据加密序列对小波系数进行混沌加密,由于小波变换并进行整体搬移后可能导致像素取值超过12位的情况,因此采用对异常点的超过12位的高位独立记录处理,生成新加密序列与异常点具有相同的位数且最高位为1再进行加密的策略,循环该检验步骤直至将像素范围控制在0~4095;s6:确定ecc参数,根据选点序列选出部分混沌加密后的小波系数进行ecc加密,同时对原系数序列的md5hash进行ecc签名,两步合并进行signcryption,构成ecc签密;s7:对ecc签密后的图像根据置乱序列进行比特级置乱,打乱加密结果,进一步提高安全性,最后生成加密图像。在具体实施过程中,通过对dicom图像进行混沌和ecc双重加密处理,提高了图像加密的安全性;通过应用signcryption技术对图像进行数字签名,保证加密图像的安全性和完整性;同时,对图像进行多级小波变换选取部分数据进行非对称性加密的形式,有效地提高了加密效率,并通过比特级混沌置乱保证部分加密的影响扩展至整个图像。更具体的,所述步骤s1具体为:输入原始明文图像,对原图像进行sha256哈希函数生成一个256位ikey,同时使用一个外部256位比特串作为ekey;密钥由ikey和ekey共512位组成。在具体实施过程中,本方法最后对在具体实施过程中,对ikey和ekey执行signcryption,综合加密图像形成整体签密方案。更具体的,所述步骤s2具体为:采用无损的legall53整型小波对图像序列进行3层小波变换,将图像序列整体上移至非负域,同时获取小波系数。在具体实施过程中,采用无损的legall53整型小波对图像序列进行处理,可以保证图像的精确性。由于小波变换会产生负数值,因此对所有点加上所有点中最小值的绝对值,将序列整体上移至非负域。更具体的,在所述步骤s3中,所述生成混沌系统初始值和间歇参数的过程具体为:s301:将ekey分割为8组32位的块,即:ekey={ek0,ek1,…,ek7},eki={eki,0,eki,1,…,eki,31}同样,将ikey分割为8组32位的块,即:ikey={ik0,ik1,…,ik7},iki={iki,0,iki,1,…,iki,31}s302:计算求和项se和si:其中,eki,j表示ekey中第i块的第j位的值;iki,j同理;s303:计算初始值和间歇参数:1)广义双峰混沌系统(gdhmap)初始值u0:2)三维交织混沌系统初始值x0、y0、z0及参数λ、k1、k2、k3:3)混沌加密参数α:4)ecc加密参数a、随机数初值seed:更具体的,在所述步骤s3中,所述广义双峰混沌系统fgdh(u,r,c)具体表达式为:un+1=r(un-c)2(c2-(un-c)2)=fgdh(u,r,c)确定广义双峰函数参数r、c和初始值u0;其中,根据广义双峰函数的性质,当泛化参数c取得不同值时,有着不同的能使x混沌的参数r取值范围,测试时我们采用c=1,r=8。根据密钥计算得到u0;同时,将初始值u0代入广义双峰函数中迭代100次,对广义双峰混沌系统进行初始化,消除初值的影响,新的初值依然记为u0;将u0、参数r、c代入fgdh(u,r,c)中,得到混沌序列{un};所述三维交织混沌系统(3dmap)具体表达式为:其中,0<λ<3.999,|k1|>33.5,|k2|>37.9,|k3|>35.7;将计算得到的初始值x0、y0、z0代入三维交织混沌系统函数组中迭代100次,对三维交织混沌系统进行初始化,新的初值依然记为x0、y0、z0;将初始向量(x0,y0,z0)和参数向量(λ、k1、k2、k3)代入三维交织混沌系统函数组中,生成混沌序列{xn}、{yn}、{zn}。更具体的,在所述步骤s4中,所述加密序列k生成过程具体为:设输入图像规格size为m×n;根据混沌加密参数α设定加密序列初值为:k[0]=[fgdh(α,r,c)*1014]mod4096令序列n的初值为广义双峰混沌系统初值u0经初始化后的值,具体表示为:n[0]=gdh_init(u0)其中,gdh_init表示初始化的广义双峰混沌系统;接着进行计算,具体为:fori=1,2,...,size-1:i.n[i]=fgdh(n[i-1],r,c)k[i]=[(k[i-1]+n[i]×i010mod4096)mod4096]其中,得到的序列k即为加密序列。更具体的,在所述步骤s4中,所述置乱序列生成过程具体为:获取维度变换大小a×b×c′;利用所述三维交织混沌系统,经过初始后,迭代t=max(a,b,c′)次,得到含有t个三维随机数向量的向量组v={v0,v1,λvt-1},vi={vi,0,vi,1,vi,2};令:l={v0,0,v1,0,…,va-1,0}w={v0,1,v1,1,…,vb-1,1}h={v0,2,v1,2,…,vc′-1,2}对l、w、h分别进行快速排序,得到l′、w′、h′;根据l′与l、w′与w、h′与h各元素的位置变化,得到三个置乱位置一维向量x、y、z,具体为:fori=0,1,2,...,a-1:x[i]=get_position(l[i],l′)其中,get_position(x,b)表示序列b中元素x的位置;同理得到y[j]、z[k],得到一维向量x、y、z;最后根据x、y、z生成三维置乱序列,具体表达式为:fori=0,1,2,...,a-1:forj=0,1,2,...,b-1:fork=0,1,2,...,c′-1:p[i][j][k]=(x[i],y[j],z[k])其中,p为置乱序列。更具体的,在所述步骤s4中,由于比特级置乱为三维置乱,为了高效获取一组不重复的置乱位置,我们采用快速排序来获得置乱位置,由于快速排序的平均时间复杂度为o(nlogn),因此为保证效率,需要改变维度大小使得各维度大小尽可能接近。所述维度变换大小具体为:获取原维度size为m×n×d,其中,m×n分别是图像的长和宽,d为图像像素位数;设m≥n≥d;缩放m×n,使得m′、n′接近,具体为:fori=1,2,3...:n′=n×i其中,m′更新为对取整;计算参数i′,使|m′-n′|最小,记录此时的m′、n′;接着,缩放m′×n′和d,使和d接近,具体为:forj=1,2,3...:d′=d×j2计算参数j′,使最小,记录此时的m″、n″和d′;若将维度设定为m″×n″×d′,则会有s=m×n×d-m″×n″×d′位溢出,设最短边c=min(m″,n″,d′),a、b为其它两边,为了尽可能减少溢出,还需要对c进行扩充,扩充长度令c′=c+k,则最终确定维度变换大小为a×b×c′。更具体的,设在步骤s4中,根据输入图像大小m×n生成的加密序列为k,则所述步骤s5具体为:s51:将小波变换后的图像序列reshape为(m×n,1)的像素流l,即小波系数利用加密序列k进行初步加密,加密公式为:s52:检查图像像素的取值范围,若存在像素取值大于12位,则对于大于12位的点记录其位置并根据异常点数量生成新的加密序列,新加密序列的每个值与其对应的异常点具有相同的位数且最高位为1;若又发现有像素取值大于12位,则再次记录其位置并生成新的加密序列,新加密序列的每个值与其对应的异常点具有相同的位数且最高位为1,再对这些点与新加密序列进行加密,再检验其取值范围,循环此步骤直至所有点都在0~4095之间,输出像素流l″;s53:对像素流l″进行第二次加密,加密公式为:其中,当i=0时,s为0~4095之间的任何一个随机数,测试时采用s=[(α×0.43+3.57)×x0×(1-x0)×1014]mod4096,最后得到序列c;s54:将步骤s53中得到的序列c转化为(m×n)完成混沌加密过程。更具体的,在所述步骤s7中,将ecc签密后的序列进行12位比特化,例如原序列某像素点为4095则12位比特化结果为[1,1,1,1,1,1,1,1,1,1,1,1]。序列中每个元素均比特化后组成比特流l,设图像长宽为m和n,则比特流长度为m×n×12;根据维度变换大小a×b×c′对比特流l进行截取,具体表示为:l1=[l0,l1,…,la×b×c′-1];l2=[la×b×c′,la×b×c′+1,…,lm×n×12];并将l1转化为(a×b×c′)的三维矩阵cube,计算比特流l2长度r=m×n×12-a×b×c′;对cube根据置乱序列p根据置乱序列,具体表示为:fori=0,1,2,...,a-1:forj=0,1,2,...,b-1:fork=0,1,2,...,c′-1:s=p[i][j][k]cube′[i][j][k]=cube(s[0],s[1],s[2])将置乱结果cube'恢复为比特流l1',计算将l2中的元素与l1每隔h个元素中的随机一个进行置换(随机位置由广义双峰混沌系统产生),得到比特流l2',以达到扰乱置乱结果的效果,进一步提高了安全性。完成后得到l1'、l2',再将两者拼接起来形成最终比特流,再将比特流reshape回(m×n,12),将其元素恢复为12位的像素,形成像素流后再reshape回(m×n)大小,至此比特级置乱完成,生成加密图像。在具体实施过程中,本发明通过对dicom图像进行混沌和ecc双重加密处理,提高了图像加密的安全性;通过应用signcryption技术对图像进行数字签名,保证加密图像的安全性和完整性;同时,对图像进行多级小波变换选取部分数据进行非对称性加密的形式,有效地提高了加密效率,并通过比特级混沌置乱保证部分加密的影响扩展至整个图像。实施例2进一步的,为了适应当前医学的使用需求,本发明在实施例1的基础上,还提供一种基于混沌映射和选择性signcryption的dicom图像非对称加密系统。针对专门的医学图像类型进行多次的数据加密,增加加密后图像的安全性和完整性,同时也在时间效率方面进行优化处理降低时间成本,为后续患者/医生使用加密或者解密医学图像提供了强有力的应用。该系统可以用如本发明所述的基于混沌映射和选择性signcryption的dicom图像非对称加密方法,具体包括:1.原始图像的输入及密钥的生成:初始时输入图像序列。与此同时,使用原图像序列进行sha256hash生成一个256位ikey,同时使用一个外部256位字符串作为ekey。总密钥由ikey和ekey组成,用于产生后续流程中使用的初始值和间歇参数。2.多级小波变换处理:由于医学图像讲究精确性要避免数据损失,不能使用常规的浮点型小波,因此采用无损的legall53整型小波对图像进行3层小波变换。由于小波变换会产生负数值,因此对所有点加上所有点中最小值的绝对值,将序列整体上移至非负域。3.混沌系统初始值和控制参数生成:在这里混用两种混沌系统进行图像的加密。首先使用密钥生成混沌系统初始值和间歇参数,紧接着利用广义双峰混沌系统生成加密序列、选点序列,再利用三维交织混沌系统生成置乱序列。使用多个混沌系统进行不同序列的生成极大增加了整个加密过程的安全性,能有效的防止遭到暴力破解。4.混沌加密处理:用混沌序列与通过步骤2后的小波系数进行混沌加密,由于小波变换并进行整体搬移后可能导致极少量像素取值超过12位的情况,因此采用对异常点的超过12位的高位独立记录处理,生成新加密序列与异常点具有相同的位数且最高位为1再进行加密的策略,循环该检验步骤直至将像素范围控制在0~4095。5.ecc签密处理:利用步骤3生成的选点序列选出部分小波系数进行ecc加密,同时对系数序列的md5hash进行ecc签名,两步同时进行,完成ecc加密步骤。这里非对称加密选择ecc的原因是:①ecc加密算法具有更好的安全性,比目前的其它非对称加密算法能更好地防止破解。②相比其他的非对称加密方法,ecc加密算法能使用较短的密钥来提供更好的安全。6.比特级置乱:最后一步,将步骤5签密处理后的序列根据步骤3;7.最后一步,将步骤5签密处理后的序列根据步骤3。在具体实施过程中,本申请以12位的dicom医学图像为研究对象,贴紧医学图像在传输期间对其安全性、完整性、私密性的需求,本申请基于复合混沌映射和基于ecc的signcryption的多重医学图像加密算法相较现存的普通对称加密,在加密效果和破解难度上均有所提升,而相较于现今主流的非对称加密,本算法在加密速度和算法效率方面有所突破,同时对图像进行数字签名保证了医学图像信息的完整性。实施例3更具体的,在实施例1的基础上,本申请在所述步骤s4中,所述选点序列生成过程具体为:经过三层小波变换后系数构成图2所示的树状结构。1、如图2所示,第3层小波ll3部分像素点全部选取;2、第3层小波hl3、lh3、hh3部分按照第3层小波ll3部分坐标选取,由图2可知,一个第3层ll3系数对应第3层hl3、lh3、hh3系数各1个;1、2两步结果为第2层小波ll2系数被全部选取;3、对第3层小波hl3、lh3、hh3子带中的每个系数,对应第2层小波子带中的4个孩子系数,随机选取4个系数中的一个,随机位置由广义双峰混沌系统产生;4、对第3层小波hl3、lh3、hh3子带中的每个系数,对应第1层小波子带中的16个孩子系数,随机选取16个系数中的一个,随机数由广义双峰混沌系统产生,由此生成选点序列。实施例4更具体的,本发明还提供了一种针对本发明所述加密方法的解密方法,如图3所示。解密过程为加密过程的逆。首先获取加密图像和密钥,通过密钥生成解密所需要的间歇参数及初始值,然后通过伪随机数生成器生成逆置乱序列、选点序列、混沌解密序列,进而对加密图像进行逆比特级置乱、ecc解密和混沌解密,再做小波逆变换重构图像,最后进行图像后处理将预处理时置零的负值改回去,接下来对图像做md5hash并进行ecc签名验证,若验证通过则输出解密图像,不通过则输出验证失败。实施例5更具体的,在本发明所述步骤s6中,所述ecc加密即椭圆曲线加密,其数学原理及流程具体为:一、数学原理1.将椭圆曲线离散化椭圆曲线在实数域上定义,是连续函数,因此需要将椭圆曲线定义到有限域上,才能够在计算机上使用椭圆曲线进行加密。有限域fp中有p个元素,有限域fp中的运算有加,乘,除,求逆。当有限域fp中元素的个数p为素数个时任意元素都有逆,因此将曲线离散化时需要令p为素数。同时,在底层的字节码里,为了让字节码尽量使用,不产生大量的浪费,有限域fp的大小应为梅森素数,即令p=2n-1,其中n为整数。同时,并不是所有的椭圆曲线都适合加密,y2=x3+ax+b是一类可以用于加密的曲线,也是最简单的一类。2.素数域中椭圆曲线的加法(1)无穷远点是零元:o∞+o∞=o∞o∞+p=p(2)p(x,y)的负元是-p(x,-y),有p+(-p)=o∞(3)设p(x1,y1)+q(x2,y2)=r(x3,y3),则有x3≡(k2-x1-x2)modpy3≡[k(x1-x3)-y1]modp若椭圆曲线上的一点p存在最小正整数n使np=o∞,则称n为p的阶.若有限域是素数域的话p必存在阶n。二、椭圆曲线加密解密1.通信过程(1)接收方a选定某椭圆曲线ep(a,b),选定某点作为基点base(x0,y0)。(2)接收方a从广义双峰混沌系统的混沌序列(设为um)中选择某些数生成私钥其中n为基点的阶数,生成公钥pubkey(x,y)=prikey·base(x0,y0)。(3)接收方a公开已选择的椭圆曲线ep(a,b),基点base(x0,y0)和公钥pubkey(x,y)。(4)发送方b将明文数据编码到ep(a,b)上的一点m(具体的编码方式根据实际情况而定),选取随机数r(r<n)。(5)发送方b计算c1=m+r·pubkey(x,y),c2=r·base(x0,y0)。(6)发送方b将c1,c2发送给接收方a。(7)接收方a接收到数据后,计算m=c1-prikey·c2,对m解码得到明文数据。如果通信过程中信息泄露,偷窃者仅能看到接收方a公开的信息和c1,c2,通过公钥获取私钥,或通c1,c2获取r都相对较难,难以破译明文。2.椭圆曲线加密解密证明c1-prikey·c2=(m+r·pubkey)-prikey·(r·base)=m+r·(prikey·base)-prikey·(r·base)=m3.程序实现其程序实现如图4所示,(1)接收方b初始化选取的椭圆曲线,基点,私钥,计算公钥,公开椭圆曲线,基点和公钥。其中椭圆曲线和私钥可以任意选取.在椭圆曲线中点的加,减,乘和求逆等所有操作都仅需椭圆曲线方程中一次项的系数a,在确定椭圆曲线时可以忽略常数b。常数b可由系数a和选取的基点确定。为保证加密的安全性,有限域fp的元素个数设为p=2127-1。在选取基点的时候,这里可看作每个基点都对应不同的椭圆曲线。基点的阶数不一定相同,由于基点的阶数决定私钥空间,所以基点的选取需要先对基点的阶数做计算(schoof算法),筛选出符合要求的基点。因为公钥是通过私钥和基点计算出来的,当使用公钥和基点推导私钥时需要从1开始遍历整个私钥空间,破解难度较大,避免了让偷窃者以较少计算量成功破解。(2)发送方a将明文数据编码到某点。因为是对医学图像加密,数据量庞大,把明文数据编码到一个点上是不可取的,单个随机值r容易泄露,且从一点逆向解码数据也难以实现,所以发送方将大量的数据分组编码至某些点,加密时取多个随机值计算即可,且多个随机值加密,可看作是多个子钥组合加密,意味着每个随机值不需要取太大的值,只需数据分组的数量足够大即可。因为医学图像一般取12bit灰度值,且有限域fp中p=2127-1,所以将127个12bit的像素作为一个分组,转换成12个127bit的值参与加密,尽可能使用字节码空间。(3)发送方a将转换后的数据通过一系列加密生成2倍于加密前的数据,即c1组和c2组。加密过程中,因为有限域的元素个数是2127-1个,所以在加密时选择127bit的值加密。但在加密过程中有取模操作,当有限域中元素个数是p个时,可以参与加密的数的范围是[0,p-1]。所以当加密的数等于2127-1时,需要对其做特殊处理。在此设置c3组,用于记录所有值为2127-1的数的位置,并且用[0,2127-2]中任意数替代该数参与加密计算。利用接收方b公开的公钥和基点加密,得到的数据是127bit的值,进行转换,化为12bit的数据,最终输出c1组,c2组,c3组,至此加密完成。(4)发送方a将处理好的c1组,c2组,c3组发送给接收方b,接收方b用私钥进行解密。解密前需要先将c1组,c2组中的数据转换成127bit的值,再参与解密。解密后通过c3组中的各个位置序列恢复被代替值(2127-1),根据发送方a的编码方式,将127bit的数据分组转换变成12bit的数据,验证无误后,解密完成。三、椭圆曲线签密验证1.签密验证过程,如图5所示。签名过程:(1)选择某椭圆曲线ep(a,b)和基点base(x0,y0),选择某私钥(私钥大于零且小于基点阶数n),计算公钥pubkey(x,y)=prikey·base(x0,y0)。(2)选择随机数r(r<n),计算r(xr,yr)=r·base(x0,y0)。(3)计算签密内容的哈希值h,计算s≡r-h·prikey(modn)。(4)公布椭圆曲线ep(a,b),基点base(x0,y0),公钥pubkey(x,y),值s,点r(xr,yr)作为签密内容的签名,验证过程如下:计算r'≡s·base(x0,y0)+h·pubkey(modp)若r'=r则验证成功.2.验证签名的证明如果接收的s和r正确的话则有:r'≡s·base(x0,y0)+h·pubkey≡(r-h·prikey)·base(x0,y0)+h·prikey·base(x0,y0)≡r·base(x0,y0)≡r显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。

我要回帖

更多关于 x减三的绝对值等于多少 的文章

 

随机推荐