des算法的c语言实现

des算法的c语言实现

ID:21813837

大小:54.50 KB

页数:5页

时间:2018-10-24

des算法的c语言实现_第1页
des算法的c语言实现_第2页
des算法的c语言实现_第3页
des算法的c语言实现_第4页
des算法的c语言实现_第5页
资源描述:

《des算法的c语言实现》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、DES算法的C语言实现:对称密码算法又称单钥或私钥或传统密码体制,其发方和收方使用相同的密钥,即加密密钥和解密密钥是相同的。在众多的常规密码中影响最大的是DES密码。该文介绍DES算法的C语言实现。  关键词:DES;密钥;初始置换;逆置换  :TP311:A:1009-3044(2011)10-2295-02  TheRealizationofDESAlgorithmationTechnology,DalianOceanUniversity,Dalian116023,China)  Abstract:Symmetrickeycrypt

2、ography,alsocalledsinglekeyorprivatekeyortraditionalcryptography,ekey,intheothermetrickeycryptography.ThispaperdescribesDESalgorithmusingClanguage.  Keyutation;inversepermutation  随着计算机X络不断渗透到各个领域,密码学的应用也随之扩大。而DES是国际上商用保密通信和计算机通信的最常用的加密算法[1]。本文重点介绍DES算法的C语言实现。  1DES概述  美

3、国国家标准局(NBS)于1977年公布了由IBM公司研制的一种加密算法,并批准把它作为非机要部门使用的数据加密标准(DataEncryptionStandard),简称DES[2]。  2程序结构框架  该C程序有3个入口参数,Data、Key和Mode。其中Key为8字节共64位,是DES算法的工作密钥;Data也为8字节64位,是要被加密或解密的数据;Mode为工作方式:等于1时为加密,等于0时为解密。  程序首先由密钥Key通过密钥扩展算法得到16个子密钥,存放在k[0]—k[15]中。然后判断Mode的值,若Mode=0,即为解

4、密,将子密钥数组k反置,即k[0]与k[15]互换、k[1]与k[14]互换,依此类推。  得到16个子密钥后,对Data作初始置换IP,再将置换后的Data分成两部分,前32位为L,后32位为R。然后从i=0到i=14作15轮循环,每次循环作如下工作:L=R;R=L⊕F(R,k[i])。共作15轮循环而非16轮,这是因为DES算法中作的16轮迭代,在最后一轮并不进行左右交换,所以把第16轮迭代在循环外单独实现,即在循环结束时作L=L⊕F(R,k[i])。  最后合并L、R即得到64位输出结果,Mode=1时输出的是密文,Mode=0时

5、输出的是明文。程序流程如图1所示。  3程序的几个关键部件详解  程序有几个关键部件,分别是:子密钥的生成,初始置换IP与其逆置换IP-1,F函数等[3]。以下一一作详解。  3.1子密钥的生成  从用户处得到的64位密钥Key中,每8位为一组,每组第8位是校验位。在加/解密过程中,校验位是没用的。所以首先将Key由缩减变换PC-1缩减到56位。具体实现过程如下:把PC-1表存入数组pc1中,缩减时只需循环作K[i]=Key[pc1[i]]即可(56次)。数组pc1定义如下:  staticintpc1[]={  57,49,41,33

6、,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};  把置换后的密钥分为C[0]和D[0]两部分,各28位。从i=0开始,分别对C[i]和D[i]进行循环左移一到两位的位移操作,得到C[i+1]和D[i+1]。每轮的移位量存入数组LS中。LS定义如下:  staticintLS[]={1,1

7、,2,2,2,2,2,2,1,2,2,2,2,2,2,1};  串联C[i+1]和D[i+1],再把串联得到的数据经过缩减变换PC-2缩减到48位,具体实现同缩减变换PC-1。得到的48位数据即为子密钥k[i]。PC-2表存在数组pc2中,数组pc2定义如下:  staticintpc1[]={  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,

8、42,50,36,29,32};  循环16次,便得到16个子密钥。  3.2初始置换IP与其逆置换IP-1  初始置换IP与其逆置换IP-1的实现比较简单,方法类似于生成子密钥中的缩减变换PC-1和PC-

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。