信息安全中的DES加密算法

信息安全中的DES加密算法

李 联

(西北工业大学 软件学院陕西 西安710072

  摘 要: 根据密钥类型不同将现代密码技术分为2类:—类是对称加密(秘密钥匙加密)系统 ;另一类是公开密钥加密(非对称加密)系统。着重讨论DES的加密算法,详细论述了D ES的算法流程,并探讨了DES算法的缺陷和漏洞。
  关键词:网络信息安全;DES;对称加密算法;公开密钥加密算法

The DES Encryption Algorithm in Information Security

LI Lian

(Software College, Northwestern Polytechnical University, Xi an, 710072, China)

  Abstract Moderm encryption algorithm has two types as the different of key:one is the sy mmetrical encryption system;the other is the public key encryption systemThi s article mainly discusses the DES encryption algorithm, detailed states the th ought of it,and attempts to discover the defect and loophole of it
  Keywords
network information security;DES; the symmetrical encryption algorithm ;the public key encryption algorithm

  古往今来,通信中的安全保密问题一直受到广泛关注。历史上,交战双方在通信安全、保密 和密码破译方面的优势均被认为是取得战争胜利的关键因素之一。今天,人类已进入信息化 时代,现代通信涉及各个行业,信息安全已成为人人都关心的问题,这就促使密码学揭去了 神秘的面纱,为更广泛的领域和大众服务。

1/解密算法的一般原理
  密码体制从原理上可分为2大类,即单钥密码体制和双钥密码体制。
  单钥密码体制是指信息的发送方和接受方共享一把钥匙。在现代网络通信条件下,该 体制的一个关键问题是如何将密钥安全可靠地分配给通信的对方,并进行密钥管理。因此单 钥密码体制在实际应用中除了要设计出满足安全性要求的加密算法外,还必须解决好密码的 产生、分配、传输、存储和销毁等多方面问题。单钥密码可分为古典密码、流密码和分组密 码,DES就属于分组密码中的一种。
  双钥密码体制又称公钥密码体制,其最大特点是采用2个密钥将加密、解密分开。在 双钥体制下,每个用户都拥有2把密钥,—个公开,一个自己专用。当使用用户专用密钥加 密,而用该用户公开密钥解密时,则可实现一个被加密的消息能被多个用户解读;当使用 用户公开密钥加密,而用该用户专用密钥解密时,则可实现传输的信息只被一个用户解读。 前者常被用于数字签名,后者常被用于保密通信。

2/解密机制的应用
  在信息安全领域中,凡涉及到数据通信均采用加/解密机制。而目前日益发展的电子商 务正是充分展示加/解密机制的一个十分重要的领域。
  在电子商务中,订单的保密性需用加密技术来处理,而订单的可靠性、时间性则需用 数字签名技术,有时还需双重签名。例如,刘先生要买张小姐的一处房产,他发给张小姐一 个购买报价单及他对银行的授权书的消息,如果张小姐同意按此价格出卖,则要求银行将钱 划到张小姐的帐上。但刘先生不想让银行看到报价,也不想让张小姐看到他的银行帐号信息 。此外,报价和付款是相连的、不可分割的,仅当张小姐同意他的报价后,钱才会转移。要 达到这个要求,采用双重签名即可实现。

3DES的算法描述
  DES作为美国国家标准研究所(American National Standard InstituteANSI)的数 据加密算法(Data Encryption AlgorithmDEA)和ISODEA 1,成为一个世界范围内的 标准已经二十多年。尽管他带有过去时代的特征,但他很好地经受住了多年的密码分析 ,除了可能的最强有力的对手外,对其他的攻击具有较好的安全性。
3.1DES的描述
  DES是一种分组加密算法,他以64位为分组对数据加密。64位一组的明文从算法的一端 输入,64位的密文从另一端输出。DES是一个对称算法:加密和解密用的是同一个算法(除 密钥编排不同以外)。
  密钥的长度为56(密钥通常表示为64位的数,但每个第8位都用作奇偶检验,可以忽 )。密钥可以是任意的56位数,且可以在任意的时候改变。
  DES算法的入口参数有3个:KeyDataMode。其中Key8个字节共64位,是DES算法 的工作密钥;Data也为8个字节64位,是要被加密或解密的数据:ModeDES的工作方式,有 两种:加密或解密。
  DES算法的工作过程:若Mode为加密,则用Key对数据Data进行加密,生成Data的密码 形式(64位)作为DES的输出结果;若Mode为解密,则用Key对密码形式的数据Data解密,还 原为Data的明码形式(64位)作为DES的输出结果。
  在通信网络的两端,双方约定了一致的Key,在通信的源点用Key对核心数据进行DES加密 ,然后以密码形式通过公共通信网(如电话网)传输到通信网络的终点,数据达到目的 地后,用同样的Key对密码数据进行解密,便再现了明码形式的核心数据。这样便保证了核 心数据(如PINMAC等)在公共通信网中传输的安全性和可靠性。通过定期在通信网络的源 端和目的端同时改用新的Key,便能更进一步提高数据的保密性,这正是现在金融界交易网 络的流行作法。
  简单地说,算法只不过是加密的一种基本技术,DES基本组建分组是这些技术的一种组合 ,他基于密钥作用于明文,这是众所周知的轮(round)。DES16轮,这意味着要在明文分 组上16次实施相同的组合技术。
3.2DES算法详述
  DES算法把64位的明文输入块变为64位的密文输出块,他所使用的密钥也是64位,DES64 位的明文分组进行操作。通过一个初始置换,将明文分组分成左半部分和右半部分,各32 长。然后进行16轮相同的运算,这些相同的运算被称为函数f,在运算过程中数据和密 钥相结合。经过16轮运算后左、右部分在一起经过一个置换(初始置换的逆置换),这样算 法就完成了。
  1)初始置换
  其功能是把输入的64位数据块按位重新组合,并把输出分为L0R0两部分,每部分各 32位,其置换规则如表1所示。

  即将输入的第58位换到第1位,第50位换到第2位,…,依次类推,最后一位是原来的 7位,L0R0则是换位输出后的两部分,L0是输出的左32位,R0是右32位。例:设置换前 的输入值为D1D2D3D64,则经过初始置换后的结果为:L0=D58D50D8R0=D57D497
  2)逆置换
  经过16次迭代运算后,得到L16R16,将此作为输入进行逆置换,即得到密文输出。 逆置换正好是初始置换的逆运算。例如,第1位经过初始置换后,处于第40位,而通过逆置 换,又将第40位换回到第1位,其逆置换的规则如表2所示。

  (3)函数f(Ri,Ki)的计算
  其算法描述如图
1所示。

  在图1中,“扩展置换”是将32位放大成48位,“P盒置换”是32位到32位换位,其换位 规则分别如表3、表4所示。


  在(Ri,Ki)算法描述图中,S1S2,…,S8为选择函数,其功能是把6 b 据变为4 b数据。下面以选择函数S1为例说明其功能。其选择函数S1的功能表如表5 示。

  通过表5可以看到,在S1中共有4行数据,分别命名为0123行,每行有16列,分 别命名为0123,…,1415列。
  现设输入为:D=D1D2D3D4D5D6
  令:列=D2D3D4D5,行=D1D6
  然后在S1表中查得对应的数,以4位二进制表示,此即为选择函数S1的输出
  (4)子密钥Ki(48 b)的生成算法
  开始,由于不考虑每个字节的第8位,DES的密钥从64位变为48位,如表6所示,首先56 密钥被分成两个部分,每部分28位,然后根据轮数,两部分分别循环左移l2位。

  DES算法规定,其中第816,…,64位是奇偶校验位,不参与DES运算。故Key实际可用 位数只有56位。即:经过密钥置换表的变换后,Key的位数由64位变成了56位,此56位分为C 0D0两部分,各28位,然后分别进行第一次循环左移,得到C1D1,将C1(28)D1(28 )合并得到56位,再经过压缩置换,从而便得到了密钥K0(48)。依次类推,便可得到K1K 2,…,K15。需要注意的是,16次循环左移对应的左移位数要依据表7所示的规则进行。
  以上介绍了DES算法的加密过程。DES算法的解密过程是一样的,区别仅在于第一次迭代 时用子密钥K15,第二次是K14,…,最后一次用K0,算法本身并没有任何变化。

3.3算法的编程实现
  对于算法的实现,前面有了很详细的算法概述,下面主要介绍如何编程。DES加密是一种 组加密算法,他是把密文分成几块(block),一次加密一块,分几次加密完成 ,这是一个非常典型的分组加密算法。
  算法的主要函数为:
 

  这个函数是对dc这个32位的结构进行加密,data则是输入的密钥存放的数据结构,blocks 因为是DES加密算法时的一个分组加密算法,所以blocks是指分组的组数。
 

  这个函数是上个函数的逆运算,即对他进行解密。

4DES算法的应用误区及避开方法
  DES算法具有极高的安全性,到目前为止,除了用穷举搜索法对DES算法进行攻击外,还没 有发现更有效的办法。而56位长的密钥的穷举空间为256,这意味着如果一台计算机的速度 是每秒检测一百万个密钥,则他搜索完全部密钥就需要将近2 285年的时间,可见,这是 难以实现的。当然,随着科学技术的发展,当出现超高速计算机后,可以考虑把DES 钥的长度再增长一些,以此来达到更高的保密程度。
  由上述DES算法介绍可以看到,DES算法中只用到64位密钥中的其中56位,而第816 24,…,648个位并未参与DES运算,这一点,提出了一个应用上的要求,即DES 的安全性是基于除了81624,…,64位外的其余56位的组合变化才得以保证的。因此 ,在实际应用中,应避开使用第81624,…,64位作为DES密钥的有效数据位,才能保 DES算法安全可靠。对运用DES来达到保密作用的系统产生数据被破译的危险,这正是DES 算法在应用上的误区。
  避开DES算法应用误区的具体操作:在DES密钥Key的使用、管理及密钥更换的过程中,应 对避开DES算法的应用误区,即绝对不能把Key的第81624,…,64位作为有效数据位 来对Key进行管理,这一点,对应用DES加密的用户来说要高度重视。有些网络, 利用定期更换DES密钥Key的办法来进一步提高系统的安全性和可靠性,如果忽略了上述应用 误区,那么,更换新密钥将是徒劳的,对网络的安全运行将十分危险,所以更换密钥一 定要保证新Key与旧Key真正的不同,即除了第81624,…,64位以外其他位数据发生 了变化,这一点是非常重要的。
  目前加密算法已被广泛的应用,随着信息化和数字化社会的发展,随着计算机和Inte rnet的普及,密码学必将在国家安全、经济交流、网络安全及人民生活等方面发挥更大作用

参考文献

1 [美]Bruce Schneier应用密码学[M].吴世忠,祝世雄,张文正,等译.北京:机械 工业出版社,2000.
2]冯登国.密码分析学[M].北京:清华大学出版社,2000.

 
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: qt DES加密算法是一种常见的对称加密算法,用于保护数据的安全性。如果你想要下载qt DES加密算法库或相关的开发工具,你可以通过以下几种方式进行获取。 首先,你可以在Qt官方网站上搜索并下载Qt DES加密算法的相关库文件。Qt官方网站提供了丰富的开发工具和库文件,你可以根据自己的需要选择适合的版本进行下载。 其次,你可以通过Qt的开源社区、技术论坛或者代码托管平台搜索并下载qt DES加密算法的开源项目。这些开源项目往往由Qt开发者共享和维护,你可以从获取到最新的源代码、文档和使用示例。 另外,你还可以通过在搜索引擎输入相关关键词,查找qt DES加密算法的第三方库或者其他开发资源。这些第三方的开发资源可能包含更多的定制化功能或者是特定平台的适配。 无论你采用哪种方式进行下载,你需要确保所获取的库文件或者源代码是合法可靠的。在下载之前,建议你查看和参考其他开发者的评价和意见,以确保其质量和可靠性。并且在使用过程,要遵守相关的法律法规,保护个人和他人的信息安全。 ### 回答2: Qt提供了一种用于数据加密解密DES(数据加密标准)算法DES算法是一种对称加密算法,可以用于保护数据的机密性。 要下载Qt DES加密算法,可以按照以下步骤进行操作: 1. 打开Qt官方网站,网址为https://www.qt.io/。 2. 在官方网站的首页上,点击"下载"按钮,进入下载页面。 3. 在下载页面,选择您所使用的操作系统,比如Windows、Mac或Linux。 4. 在操作系统选择后,选择您所需要的Qt版本。Qt DES加密算法可以在各个版本的Qt使用,所以可以根据您的实际需求选择适合的版本。 5. 在版本选择后,点击下载按钮,开始下载Qt。 6. 根据下载速度和网络环境的不同,等待一段时间,直到下载完成。 7. 下载完成后,打开下载的文件,按照提示进行安装。安装过程可能会需要您选择安装目录和一些其他选项,可以根据自己的需要进行选择。 8. 安装完成后,打开Qt开发环境。 9. 在Qt开发环境,可以通过Qt的加密模块来使用DES加密算法。可以在Qt文档搜索相关的API和示例代码,详细了解和使用DES加密算法。 以上就是关于如何下载Qt DES加密算法的简要步骤。希望能够帮助到您。 ### 回答3: QT DES加密算法是一种对称加密算法,用于保护数据的安全性。在QT开发,我们可以通过以下步骤下载和使用QT DES加密算法。 首先,我们可以从QT官网的下载页面或者通过QT创始人开发的GitHub仓库找到DES加密算法的相关资源。可以通过搜索引擎查找“QT DES加密算法下载”,然后找到相关的下载链接。 下载完成后,我们可以将下载的DES加密算法相关文件(通常是源代码或者库文件)导入到QT项目以便使用。具体导入的方法取决于所下载的文件的格式和QT的版本,一般可以通过将文件复制到项目的特定文件夹,或者进行项目属性设置等方式。 在成功导入文件后,我们需要在QT项目引入DES加密算法的头文件,并在代码调用相应函数来完成加密操作。具体的调用方法和函数名取决于所使用的DES加密算法实现库,一般会有相关的文档或者示例代码可以参考。 在代码,我们可以使用DES加密算法对需要保护的数据进行加密,然后存储或传输加密后的数据。同样,我们也可以使用DES算法加密后的数据进行解密,以还原原始数据。这样可以确保敏感数据在存储或传输过程的安全性。 总之,通过下载和使用QT DES加密算法,我们可以增加数据的安全性,保护敏感数据的机密性。在使用过程,我们需要注意保管好加密算法的相关文件和密钥,以确保算法的安全性和正确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

superdont

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值