306_文档加密器(C#)
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
密 惠 保
1.3本课题研究的意义
古往今来,通信中的安全保密问题一直受到广泛关注。历史上,交战双方在通信安全、保密和密码破译方面的优势均被认为是取得战争胜利的关键因素之一。今天,人类已进入信息化 时代,现代通信涉及各个行业,信息安全已成为人人都关心的问题,这就促使密码学揭去了神秘的面纱,为更广泛的领域和大众服务。
1.4 本课题的研究方法
综合了加密方案的具体需求,选用ASP.NET(C#)作为开发工具、使用DES作为数据加密算法,这种加密算法加密速度快,适合对大量数据文件的加密。通过C#开发的软件是个伪可执行程序,只要该用户安装有开发相同的环境,就可以直接运行。软件工程开发方法,在经过深入地学习之后,开发了基于C#的DES加密器。下面我将具体介绍系统的开发过程: 【www.think58.com计算机毕业论文网】
2 DES算法描述
2.1 DES
美国早在1977 年就制定了自己的数据加密标准—DES。随着DES 的出现,人们对分组密码展开了深入的研究和讨论。现已有大量的分组密码,如DES 的各种变形、IDEA 算法、SAFER 系列算法、RC 系列算法、Skipjack 算法、Rijndael 算法、FEAL 系列算法、REDOC系列算法、LOKI 系列算法,CAST 系列算法、Khufu、Khafre、MMB、3-WAY、TEA、MacGuffin、SHARK、BEAR、LION、CA.1.1、CRAB、Blowfish、GOST、SQUARE、MISTY,等等。 内容来自think58 [来源:http://think58.com]
用抽象的观点来看,分组密码就是一种满足下列条件的映射E: mKm F S F 2 2 . ′ :对每个k.SK, E ( •, k)是从m F2 到m F2 的一个置换。可见,设计分组密码的问题在于找到 一种算法,能在密钥控制下从一个足够大且足够“好”的置换子集合中,简单而迅速地选出一个置换。一个好的分组密码应该是既难破译又容易实现,即加密函数E ( •, k)和解密函数D ( •, k)都必须容易计算,但是至少要从方程y=E (x, k)或x=D (y, k)中求出密钥k 应该是一个困难问题。
DES是一种分组加密算法,他以64位为分组对数据加密。64位一组的明文从算法的一端 输入,64位的密文从另一端输出。DES是一个对称算法:加密和解密用的是同一个算法(除 密钥编排不同以外)。 密钥的长度为56位(密钥通常表示为64位的数,但每个第8位都用作奇偶检验,可以忽 略)。密钥可以是任意的56位数,且可以在任意的时候改变。
DES算法的入口参数有3个:Key,Data,Mode。其中Key为8个字节共64位,是DES算法 的工作密钥;Data也为8个字节64位,是要被加密或解密的数据:Mode为DES的工作方式,有两种:加密或解密。 DES算法的工作过程:若Mode为加密,则用Key对数据Data进行加密,生成Data的密码 形式(64位)作为DES的输出结果;若Mode为解密,则用Key对密码形式的数据Data解密,还 原为Data的明码形式(64位)作为DES的输出结果。
在通信网络的两端,双方约定了一致的Key,在通信的源点用Key对核心数据进行DES加密 ,然后以密码形式通过公共通信网(如电话网)传输到通信网络的终点,数据达到目的 地后,用同样的Key对密码数据进行解密,便再现了明码形式的核心数据。这样便保证了核 心数据(如PIN,MAC等)在公共通信网中传输的安全性和可靠性。通过定期在通信网络的源 端和目的端同时改用新的Key,便能更进一步提高数据的保密性,这正是现在金融界交易网 络的流行作法。
简单地说,算法只不过是加密的一种基本技术,DES基本组建分组是这些技术的一种组合 ,他基于密钥作用于明文,这是众所周知的轮(round)。DES有16轮,这意味着要在明文分 组上16次实施相同的组合技术。
2.2 DES算法详述
DES算法把64位的明文输入块变为64位的密文输出块,他所使用的密钥也是64位,DES对64 位的明文分组进行操作。通过一个初始置换,将明文分组分成左半部分和右半部分,各32位 长。然后进行16轮相同的运算,这些相同的运算被称为函数f,在运算过程中数据和密钥相结合。经过16轮运算后左、右部分在一起经过一个置换(初始置换的逆置换),这样算法就完成了。
(1)初始置换
其功能是把输入的64位数据块按位重新组合,并把输出分为L0,R0两部分,每部分各 长32位,其置换规则如表1所示。 [资料来源:www.THINK58.com]
表1初始置换
58,50,42,34,26,18, 10, 2,60,52,44,36,28,20,12,4
62,54,46,38,30,22,14, 6,64,56,48,40,32,24,15, 8
57,49,41,33,25,17,09, 1,59,51,43,35,27,19,11,3
61,53,45,37,29,21,13, 5,63,55,47,39,31,23,15,7
即将输入的第58位换到第1位,第50位换到第2位,…,依次类推,最后一位是原来的 第7位,L0,R0则是换位输出后的两部分,L0是输出的左32位,R0是右32位。例:设置换前 的输入值为D1D2D3…D64,则经过初始置换后的结果为:L0=D58D50…D8;R0=D57D49…7。
[资料来源:http://think58.com]
(2)逆置换
经过16次迭代运算后,得到L16,R16,将此作为输入进行逆置换,即得到密文输出。 逆置换正好是初始置换的逆运算。例如,第1位经过初始置换后,处于第40位,而通过逆置 换,又将第40位换回到第1位,其逆置换的规则如表2所示。
表2逆置换
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 think58
think58.com [资料来源:THINK58.com]
(1)函数f(Ri,Ki)的计算
其算法描述如图1所示。
图1 算法描述 think58.com [来源:http://www.think58.com]
在图1中,“扩展置换”是将32位放大成48位,“P盒置换”是32位到32位换位,其换位 规则分别 如表3、表4所示。
表3扩展置换表
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 think58.com
表4 P盒置换表
16,7,20,21,29,12,28,17,1,15,23,16,23,26,5,18,31,10,
2,8,24,14,32,27, 3, 9,19,13 ,30, 6,22,11, 4,25
[资料来源:www.THINK58.com]
在(Ri,Ki)算法描述图中,S1,S2,…,S8为选择函数,其功能是把6 b数 据变为4 b数据。下面以选择函数S1为例说明其功能。其选择函数S1的功能表如表5所 示。
表5选择函数S1的功能表
14, 4,13, 1, 2,15,11, 8, 3,10, 6,12, 5, 9, 0,7
0,15, 7, 4,14, 2,13, 1,10, 6,12,11, 9, 5, 3,8
4, 1,14, 8, 13, 6, 2,11,15,12, 9,7, 3,10, 5, 0
15,12, 8, 2, 4, 9, 1, 7, 5,11, 3,14,10, 0, 6,13
think58
通过表5可以看到,在S1中共有4行数据,分别命名为0,1,2,3行,每行有16列,分 别命名为0,1,2,3,…,14,15列。
现设输入为:D=D1D2D3D4D5D6
令:列=D2D3D4D5,行=D1D6
然后在S1表中查得对应的数,以4位二进制表示,此即为选择函数S1的输出 。
(4)子密钥Ki(48 b)的生成算法
开始,由于不考虑每个字节的第8位,DES的密钥从64位变为48位,如表6所示,首先56位 密钥被分成两个部分,每部分28位,然后根据轮数,两部分分别循环左移l或2位。
表6 密钥置换
57,49,41,32,25,17, 9, 1,58,50,42,34,26,18,
10, 2,59,51,43,35,27,19,11, 3,60,52,44,36,
63,55,47,39,31,23,15, 7,62,54,46,38,30,22,
14,6,61,53,45,37,29,21,13, 5,28,20,12, 4
think58
[资料来源:www.THINK58.com]
[资料来源:http://www.THINK58.com]DES算法规定,其中第8,16,…,64位是奇偶校验位,不参与DES运算。故Key实际可用 位数只有56位。即:经过密钥置换表的变换后,Key的位数由64位变成了56位,此56位分为C 0,D0两部分,各28位,然后分别进行第一次循环左移,得到C1,D1,将C1(28位),D1(28位 )合并得到56位,再经过压缩置换,从而便得到了密钥K0(48位)。依次类推,便可得到K1,K 2,…,K15。需要注意的是,16次循环左移对应的左移位数要依据表7所示的规则进行。
以上介绍了DES算法的加密过程。DES算法的解密过程是一样的,区别仅在于第一次迭代 时用子密钥K15,第二次是K14,…,最后一次用K0,算法本身并没有任何变化。
表7循环左移位数
轮 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
think58.com [资料来源:THINK58.com]
下一篇:182_图书销售管理系统