SDES加密算法源代码(C++语言)

SDES加密算法源代码(C++语言)

ID:37286825

大小:275.34 KB

页数:6页

时间:2019-05-20

SDES加密算法源代码(C++语言)_第1页
SDES加密算法源代码(C++语言)_第2页
SDES加密算法源代码(C++语言)_第3页
SDES加密算法源代码(C++语言)_第4页
SDES加密算法源代码(C++语言)_第5页
资源描述:

《SDES加密算法源代码(C++语言)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、#includeusingnamespacestd;int*out;//用于函数中返回结果的指针,如果写在函数中会被销毁,得不到返回的指针intKey[10];//10位密钥intsubKey1[8],subKey2[8];//两个8位的子密钥intplaintext[8];//8位明文intS0[4][4]={{1,0,3,2},{3,2,1,0},{0,2,1,3},{3,1,3,2}};//S0盒子intS1[4][4]={{0,1,2,3},{2,0,1,3},{3,0,1,0},{2,1,0,3}};//S1盒子//生成

2、子密钥的函数voidcreateSubKey(){intbuff[10];buff[0]=Key[2];buff[1]=Key[4];buff[2]=Key[1];buff[3]=Key[6];buff[4]=Key[3];buff[5]=Key[9];buff[6]=Key[0];buff[7]=Key[8];buff[8]=Key[7];buff[9]=Key[5];for(inti=0;i<10;i++){Key[i]=buff[i];}/*左边5位LS-1置换*/inttemp=buff[0];for(inti=1;i<5;i++){buff

3、[i-1]=buff[i];}buff[4]=temp;/*右边5位LS-1置换*/temp=buff[5];for(inti=6;i<10;i++){buff[i-1]=buff[i];}buff[9]=temp;/*将结果写入subKey1*/subKey1[0]=buff[5];subKey1[1]=buff[2];subKey1[2]=buff[6];subKey1[3]=buff[3];subKey1[4]=buff[7];subKey1[5]=buff[4];subKey1[6]=buff[9];subKey1[7]=buff[8];/*

4、左边5位LS-2置换*/temp=buff[0];inttemp2=buff[1];for(inti=2;i<5;i++){buff[i-2]=buff[i];}buff[3]=temp;buff[4]=temp2;/*右边5位LS-2置换*/temp=buff[5];temp2=buff[6];for(inti=7;i<10;i++){buff[i-2]=buff[i];}buff[8]=temp;buff[9]=temp2;/*将结果写入subKey2*/subKey2[0]=buff[5];subKey2[1]=buff[2];subKey2[

5、2]=buff[6];subKey2[3]=buff[3];subKey2[4]=buff[7];subKey2[5]=buff[4];subKey2[6]=buff[9];subKey2[7]=buff[8];}//IP置换int*IP(int*p){out=newint[8];out[0]=p[1];out[1]=p[5];out[2]=p[2];out[3]=p[0];out[4]=p[3];out[5]=p[7];out[6]=p[4];out[7]=p[6];returnout;}//FP置换(IP的逆置换)int*FP(int*p){ou

6、t=newint[8];out[0]=p[3];out[1]=p[0];out[2]=p[2];out[3]=p[4];out[4]=p[6];out[5]=p[1];out[6]=p[7];out[7]=p[5];returnout;}//异或操作intXOR(inta,intb){if(a!=b)return1;elsereturn0;}//F操作int*F(int*R,int*sk){intbuff[8];//E/P操作buff[0]=R[3];buff[1]=R[0];buff[2]=R[1];buff[3]=R[2];buff[4]=R[1

7、];buff[5]=R[2];buff[6]=R[3];buff[7]=R[0];//与子密钥异或for(inti=0;i<8;i++)buff[i]=XOR(buff[i],sk[i]);//S盒子操作introw,col;if(buff[0]==0){if(buff[3]==0)row=0;elserow=1;}else{if(buff[3]==0)row=2;elserow=3;}if(buff[1]==0)col=0;elsecol=2;if(buff[2]!=0)col=col+1;/*S0盒子输出*/intout1=S0[row][col

8、];if(buff[4]==0){if(buff[7]==0)row=0;elserow=1;}else{i

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

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

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