DES的C语言源码

DES的C语言源码

ID:39549419

大小:53.50 KB

页数:16页

时间:2019-07-06

DES的C语言源码_第1页
DES的C语言源码_第2页
DES的C语言源码_第3页
DES的C语言源码_第4页
DES的C语言源码_第5页
资源描述:

《DES的C语言源码》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、DES算法由加密、解密和子密钥的生成三部分组成。  DES算法处理的数据对象是一组64比特的明文串。设该明文串为m=m1m2…m64(mi=0或1)。明文串经过64比特的密钥K来加密,最后生成长度为64比特的密文E。  加密过程主要涉及明文串的IP置换,F函数,子密钥的生成,SBox置换,IP逆置换。     DES算法密钥有效位是56位,即用56位的密钥来加密64位的数据。加密期间56位密钥要扩展成64位的密钥,加入奇偶效验位。我想主要是用来传输密钥用的吧,怕传输过程中出错。当然传输过程中还得对密钥加密(一般使用非对称加密)。  ucharVerifyOddEve

2、n(ucharx){   unsignedintn;   ucharucTemp=x;   x>>=1;   for(n=0;x;n++)   {      x&=x-1;   }   if(n%2==0)   {      if(!(ucTemp&1))      {         ucTemp+=1;      }   }   returnucTemp;}voidChgKey56To64(uchar*pszKey,uchar*pszKeyOut){   ucharucSave=0;   ucharucTemp,ucFill;       for(inti=0;

3、i<8;i++)   {      ucTemp=pszKey[i]>>i;      ucFill=ucSave+ucTemp;      pszKeyOut[i]=VerifyOddEven(ucFill);      ucSave=pszKey[i]<<(7-i);   }}      实现该算法,我采用的数据类型是UNSIGNEDLONG,写得比较繁琐,应该使用CHAR数组的。故我又写了一些函数来测试使用(将数据以十六进制的格式输出)。  voidDispHex(ucharucData){   ucharucTemp;   ucharucDisp;   uc

4、Temp=ucData&240;   ucTemp=ucTemp>>4;   if(ucTemp<10)   {      ucDisp=ucTemp+'0';      cout<

5、5;      cout<>((3-i)*8);    

6、  ucTemp=ulTemp&0x000000FF;      DispHex(ucTemp);   }   cout<

7、tL,ulDataOutR,Array,nArrLen,core,0,0x80000000);}voidReplace64To56(ulongulDataL,ulongulDataR,ulong*ulDataOutL,ulong*ulDataOutR,intArray[],intnArrLen,intcore){   ReplaceCore(ulDataL,ulDataR,ulDataOutL,ulDataOutR,Array,nArrLen,core,4,0x80000000);}voidReplace56To48(ulongulDataL,ulongulDa

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

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

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