- 1、本文档共37页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]DES加密算法课程设计报告
软件实现流程图
二、标准DES的加密过程
1、明文与密钥的输入
首先8位ACSII字符的明文与密钥的输入,存放在mingwen[8]和miyao[8]中,然后将这些8位的ASCII字符转换成二进制的64位的明文和密钥,分别存放在mingwenB[64]和miyaoB[64]中,并将二进制的明文和密钥放在文件中
int str[8],i,j,ch,k;
FILE *fp4;fp4=fopen(明文二进制.txt,w);
k=0;
for(i=0;i8;i++)
{
ch=mingwen[i];
for(j=0;j8;j++)
{
str[j]=ch%2;
ch=ch/2;
}
for(j=7;j=0;j--)
{
mingwenB[k]=str[j];
k++;
fprintf(fp4,%d,str[j]);
}
}
密钥的转换和存储同理。
2、密钥的产生
1)、64位miyaoB[64]经过pc-1置换,生成56位的比特串。定义pc1_Table[56],存放在afterpc1[56]中。
for(i=0;i56;i++) afterpc1[i]=miyaoB[pc1_Table[i]-1];
2)、56位比特串分组,生成C0[28]和D0[28]
for(i=0;i28;i++) C0[i]=afterpc1[i];
for(j=0,i=28;i56;i++,j++) D0[j]=afterpc1[i];
3)、C0[28]、D0[28]进行左移,产生C[16][28]和D[16][28],为进行pc-2置换产生密钥做准备。
for(i=0;i27;i++) //第一轮数据生成C[0][28]与D[0][28]
{
C[0][i]=C0[i+1];
D[0][i]=D0[i+1];
}
C[0][27]=C0[0];
D[0][27]=D0[0];
for(i=1;i16;i++) //第二轮数据至第十六轮数据生成
{ if(i==1||i==8||i==15)
{ for(j=0;j27;j++) //左移1位
{
C[i][j]=C[i-1][j+1];
D[i][j]=D[i-1][j+1];
}
C[i][27]=C[i-1][0];
D[i][27]=D[i-1][0];
}
else //左移2位
{
for(j=0;j26;j++)
{
C[i][j]=C[i-1][j+2];
D[i][j]=D[i-1][j+2];
}
C[i][26]=C[i-1][0];
C[i][27]=C[i-1][1];
D[i][26]=D[i-1][0];
D[i][27]=D[i-1][1];
}
} //产生16轮左右数据,为pc-2置换准备。
4)、左右两部分比特串合并,存放在int beforekey[16][56]中
k=0;
for(i=0;i16;i++)
{
for(j=0;j28;j++)
beforekey[i][j]=C[i][j];
for(k=0;k28;k++,j++)
beforekey[i][j]=D[i][k];
}
5)、beforekey[16][56]经过pc-2置换,产生16轮密钥keys[16][48],
for(i=0;i16;i++)
for(j=0;j48;j++)
keys[i][j]=beforekey[i][pc_2table[j]-1];
至此,16轮子密钥产生完毕,为keys[16][48]。
3、密文的产生
1)、明文经过初始置换IP置换。结果放在afterIP[64]中。
for(j=0;j64;j++)
{
afterIP[j]=mingwenB[IP_table[j]-1];
}
2)、明文的第0次分组,左部分L0[32],右部分R0[32]。
for(i=0;i32;i++)
L0[i]=afterIP[i];
for(j=0,i=32;i64;i++,j++)
R0[j]=afterIP[i];
3)、为产生密文,要进行16轮的循环,每次循环生成一个L[i][32]和R[i][32],下面进行第一次循环,生成L[0][32]和R[0][32]。
for(i=0;i32;i++) //Li=R(i-1)
您可能关注的文档
最近下载
- 2025江苏南京江北新区生物医药公共服务平台有限公司招聘15人笔试备考题库及答案解析.docx
- 期末总复习+课件-2024-2025学年七年级地理上学期人教版(2024).pptx VIP
- 结构加固工程施工方案.doc
- 干细胞治疗骨关节病.pptx
- 粤教版综合实践五年级上册第三单元第2课时《制作桥梁模型》教案.doc
- 2024年深圳中学初中部初一入学分班考试数学模拟试卷附答案解析.pdf VIP
- 2024年新版国际私法形成性考核册答案.doc
- Mind Arduino创意编程套件培训课件.pptx VIP
- A类机器处所固定式局部水基灭火系统的有关解释收集.pdf VIP
- CDA数据分析师认证题库精选.pdf VIP
文档评论(0)