基于C#的DES加密算法的应用
2013-10-17吕朝晖
董 洁 吕朝晖 李 婷
(沈阳建筑大学信息与控制工程学院 辽宁 110168 )
0 前言
随着信息技术和产业的急速发展,信息安全问题也随之日益凸显,信息安全问题关乎国家及社会的安全,寻找解决措施不可怠慢。自研发以来,DES成为了众多领域的可靠通信的安全保障。无论是全球的贸易、金融部门,还是用户的识别、文件保护都有DES深刻的影响。
1 DES加密算法
DES(Data Encrypti on Standard),上个世纪70年代由IBM开发的单密钥对称加解密算法的一个典范,并在1997年被美国政府正式的采纳。DES算法是一种强算法,到目前为止,除了使用穷举法搜索其密匙空间寻找破译密码外,没有更有效的办法。[1]
DES加密的整个过程可分为四个重要的阶段:初始置换、子密钥的生成、f函数运算、最终逆置换。[2]
1.1 初始置换
将加密的数据分割成以若干个以64位为单位的数据(如果位数不够用00或FF补足),按照8行8列进行排列,使用固定的IP置换表对64位的二进制明文块进行重新排列,置换完毕的明文块被分为两个半区L0(前32位)、R0(后32位)。
1.2 子密钥生成
子密钥的生成主要是通过置换和移位产生的,原始密钥由用户提供,是DES算法的输入之一,是一个64位的二进制块。但DES算法中8的整数倍位置的数为奇偶校验位,不参与运算,用密钥置换表进行置换、去掉奇偶校验位后,将56位的密钥分成两部分,前后各为28位。将这两部分进行16次循环左移位,每一次移位以后得到的新的56位子密钥作为下一次移位的有效密钥,完成16次移位后使用密钥选择表压缩置换,总计得到16个48位的子密钥。
1.3 f函数运算
完成前述加密原文以及密钥的准备后,需要进行f函数的加密运算,公式如下:
从公式可以看出加密运算的关键在于Ri:取初始置换后明文块的后半区R,在运算前首先要对该32位的数据进行扩充,即重复部分位置的数据将其扩充为48位。
扩充后的数据与48位的子密钥的对应位ki进行异或运算,异或运算后的结果被分为8个6位的二进制块输入到代换函数S中进行代换。
代换函数S(S盒)的原理是将被分割成6位的二进制块的第一位和最后一位合并成一个2位的二进制块,换算为十进制后作为S盒的行数,中间4位换算为S盒的列数。再将S盒中确定的数字转换为4位的二进制数。代换后的结果再经过换位表进行置换。[3]8个6位的二进制块对应不同的S盒,数值各不相同。完成f函数运算后的Ri,与Li进行异或运算,并交换位置进行16次的迭代。
1.4 最终逆置换
迭代16次后的最终结果R16,L16,按照表1所示逆置换表进行位置转换:首位数据对应原第40位的,第二位数据对应原第8位的…,即IP-1置换,便完成了加密过程。
表1 IP-1逆置换表
2 DES算法的实现
DES算法运用了置换、替代、代数等多种密码技术,算法结构紧凑,条理清楚,而且加密与解密算法类似,这些特点都便于将DES算法在程中实现。在C#中提供了ESCryptoServiceProvider类用于实现DES加密及解密的过程。用C#进行DES加密的关键代码如下:
在数据库的应用中,如果用户的密码以明码的方式存储在数据表中容易造成安全的隐患,为此可以采用DES算法对其进行了加密处理,加密前后结果如表2所示。
表2 加密结果
ZXCVBN D 1490677E2BC464F 123456 24179C578C1D8219
3 结束语
如今,信息已经成为一种重要的战略资源,为防止信息泄密,对关键信息进行加密很有必要。DES 是世界上第一个公认的实用密码算法标准,尽管人们在破译 DES 方面取得了许多进展,但至今仍未能找到比穷举搜索密钥更有效的方法,,但为了保障安全性,也不适合在网络环境下单独使用。现今DES的安全性完全在于对密钥加以保护,必须有可靠的信道来分发密钥。
[1]周明全 等.网络信息安全技术(第2版)[M].西安电子科技大学出版社,2010:55-57.
[2]解双建,原 亮,谢方方.DES 算法原理及其 FPGA 实现[J].计算机技术与发展.2011(7):158-161.
[3]管莹,敬茂华 .DES算法原理及实现[J].电脑编程技术与维护.2009(2):5-8.