图像加密与实现(6)

2019-04-22 16:39

算法实现

表3-1 每轮密钥循环左移位数

迭代次数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 右移位数 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1

例如:KL0=c1c2?c28,KR0=d1d2?d28由于是第1次迭代,循环左移位数是1,所以,KL0=c2c3?c28c1,KR0=d2d3?d28d1,KLKR两组密钥循环左移后,再合并成56位密钥,例如:K1=c2c3?c28c1d2d3?d28d1,合并后 56 位密钥一方面用于产生子密钥,另一方面为下次迭代运算做准备。

5) 压缩置换

按照密钥置换矩阵3-3,从56位密钥中产生48位子密钥。密钥压缩置换矩阵中共有48位元素,在密钥压缩置换表中看不到9,18,22,25,35,38,43,54这8个元素,因为这些元素已被压缩了。

矩阵3-3 密钥压缩压缩置换

? 14 17 11 24 1 5 ??? 3 28 15 6 21 10??? 23 19 12 4 26 8??? 16 7 27 20 13 2??? 41 52 31 37 47 55? ?? 30 40 51 45 33 48??? 44 49 39 56 34 53????? 46 42 50 36 29 32??6) 扩展置换

将原明文数据的右半部分R从32位扩展成48位,扩展置换按照扩展置换矩阵3-4规则进行。

22

算法实现

矩阵3-4 扩展置换

? 32 1 2 3 4 5 ??? 4 5 6 7 8 9 ??? 8 9 10 11 12 13 ??? 12 13 14 15 16 17 ?? ? 16 17 18 19 20 21 ??? 20 21 22 23 24 25 ??? 24 25 26 27 28 29 ????? 28 29 30 31 32 1 ??7) 子密钥和扩展置换后的数据异或运算

将子密钥和扩展置换后的数据按位进行异或运算,然后,将得到的48位结果送到S盒代替。

8) S盒替换

将48位数据按顺序每6位分为一组,共分成8组,并分别输入到S1,S2?S8盒中,每个S盒的输出为4位,再将每个S盒的输出拼接成32位,S盒如图3-7所示。

48位输入 6位 S1 S8 ?????? 4位 32位输出 图3-7 S 盒

DES的S盒的使用方法是:设S盒的输入为6位二进制数 b1b2b3b4b5b6,把 b1 b6这两位二进制数转换成十进制,并作为S盒的行号 i,把 b2b3b4b5这4位二进制数转换成十进制数,并作为S盒的列号j,则对应S盒的(i,j)元素就为S盒的十进制输出,再将该十进制数转换为二进制数,就得到S盒的4位二进制输出。

23

算法实现

S盒替换是DES的核心部分,整个变换过程是非线性的(而DES算法的其它变换都是线性的),提供了很好的混乱数据效果,比DES算法其它步骤提供的安全性更好。

9) P盒置换

将S盒输出的32位二进制数据按P盒置换矩阵3-5进行置换。

矩阵3-5 P盒置换

? 16 7 20 21 29 12 28 17 ??? 1 15 23 26 5 28 31 10 ?? ? 2 8 24 14 32 27 3 9 ???? 19 13 30 6 22 11 4 25 ?例如:将S盒输出的第16位变换成第1位,S盒输出的第1位变换成第9位。 10)P盒输出与原64位数据进行异或运算

将P盒输出的32位二进制与原64位数据分组的左半部分Li进行异或运算,得到分组的右半部分Ri。

11)Ri-1-Li

将原分组的右半部分Ri-1作为分组的左半部分Li。 12)重复4—11步,循环操作16轮。 13)逆初始置换

经过16轮的DES运算后,将输出的L16,R16合并起来。形成64位的二进制数,最后按照逆初始置换矩阵3-6进行逆初始置换,就可以得到密文[9]。

矩阵3-6 逆初始置换

? 40 8 48 16 56 24 64 32 ??? 39 7 47 15 55 23 63 31 ??? 38 6 46 14 54 22 62 30 ??? 37 5 45 13 53 21 61 29 ?? ? 36 4 44 12 52 20 60 28 ??? 35 3 43 11 51 19 59 27 ??? 34 2 42 10 50 18 58 26 ????? 33 1 41 9 49 17 57 25 ??(4)DES算法解密过程

DES算法加密和解密过程使用相同的算法,并使用相同的加密密钥和解密密钥,两者的区别是:

1) DES 加密时是从L0,R0到L15,R15进行变换,而解密时是从L15,R15

24

算法实现

到L0,R0进行变换的。

2) 加密时各轮的加密密钥为K0K1?K15,而解密时各轮的解密密钥为K15K14?K0。

3) 加密时密钥循环左移,而解密时循环右移。 (5)三重DES 算法

为了提高算法的安全强度,本课题采用三重DES加密,它的基本方法是:用两个密钥对一个分组进行三次加密,即加密时,先用第一个密钥加密,然后用第二个密钥解密,最后再用第一个密钥加密。解密时,先用第一个密钥解密,然后用第二个密钥加密,最后再用第一个密钥解密。相关图示如下图3-8所示。

加密

DES DES DES 明文 K1 K2 K3 密文 DES DES DES 解密

图3-8 三重DES

3.5.2 RSA公开密钥密码体制

原理:根据数论,寻求两个大素数比较简单,而把两个大素数的乘积分解则极其困难。在这一体制中,每个用户有两个密钥:加密密钥pk={e,n},和解密密钥 sk={d,n}。用户把加密密钥公开,使得任何其它用户都可以使用。而对解密密钥中的d 则保密[10]。

这里,n为两个大素数p和q的乘积(素数p和q一般为100位以上的十进制数)。e和d 满足一定的关系.当敌手已知e 和n 时并不能求出d。

(1)加密算法

若用整数X表示明文,用整数Y表示密文(X 和Y 均小于n ),则加密和解

25

算法实现

密运算为:

加密:Y?Xemodn

解密:X?Ydmodn 公式(3-1)

(2)密钥的产生 1)计算n 。

用户秘密地选择两个大素数p和q,计算出n=pq,n 称为RSA算法的模数,明文必须用小于n 的数来表示,实际上n 是几百比特长的数。加密消息m 时,首先将它分成比n小的数据分组(采用十六进制数,选取小于n 的16 的最大次幂),也就是说,p和q为 100 位的素数,那么n 将有 200 位,每个消息分组m 应小于200位长(如果需要加密固定的消息分组,那么可以在它的左边填充一些0 并确保该数比n小)。加密后的密文c,将由相同长度的分组ci组成。

加密公式简化为: ci?mie?modn? 公式(3-2) 解密时,取每一个加密后的分组ci并计算:

dmi?ci?modn? 公式(3-3)

2)计算??n?。用户再计算出n的欧拉函数,即:

??n???p?1???q?1?.??n? 公式(3-4)

3)选择e。从?0,??n??1?,中选择一个与??n?互素的数e作为公开的加密指数。

4)计算d。用户计算出满足下式的d:ed?1mod??n? 作为解密指数,得出: d?e?1mod??p?1??q?1?? 公式(3-5) 5)得出所需要的公开密钥和私有密钥。

公开密钥 (即加密密钥) pk??e,d? 私有密钥 (即解密密钥) sk??d,n? 3.5.3 混合加密的实现

本设计使用 DES 作为对称密钥算法加密原图像,使用RSA作为公开密钥算法加密DES密钥。本设计特点如下:

(1) 提供了两个加密接口.混合加密,DES加密。

(2) 本设计的DES可以进行1次DES加密(标准DES加密)和3次DES加密。它会根据密钥长度,自动选择加密方案。当密钥长度在64位以内时它将使用标准

26


图像加密与实现(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:黄冈中学2008届初三模拟考试(三)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: