DES译码程序的MFC实现
来源:互联网 发布:软件可行性报告如何写 编辑:程序博客网 时间:2024/05/20 21:18
一直打算把这个部分分享出来,但是最近比较忙,所以总是会忘记,闲话不多说,说说具体内容。
对话框有三个部分组成,分别是用于输入十六进制密文的输入框,译码按钮和进行偶校验与输出框
对于des的加解密程序,在上一章节已经给出,这里就不多加阐述了,当得到输入的十六进制密文后,首
先将其译成二进制数据,然后再对其进行译码,输出。
void CDES_appDlg::OnBnClickedButton1(){// TODO: 在此添加控件通知处理程序代码 UpdateData(true); unsigned char x; char MingW64bit[64]; char Key64bit[64],Key8Byte[8]={'0','1','2','3','4','5','6','7'}; char Key16[16][48],temp2[64]; char Mybuff[10]; char c[32],ouj[8],jiou[]="奇偶校验:"; char total[100]="输入有误。"; int i=0,j,w,k; //对密钥进行替换 Char8ToBit64(Key8Byte,Key64bit); //密钥字符串置换成二进制串 for(x=0;x<8;x++) //补偿足8位奇偶校验位 { memcpy(temp2+8*x,Key64bit+7*x,7); temp2[x*8+7]=1; } memcpy(Key64bit,temp2,64); Key16Itera(Key64bit,Key16);//生成子密钥 /*************************************************************************************************解密部分*****************************************************************************************************************/for(i=0;m_input[i]!='\0';i++){ c[i]=m_input[i];}//去除空格for(i=0;i<32;i++){if(c[i]==' '){for(j=i;j<32;j++){ c[j]=c[j+1];}i--;}}i=0;while(i<16){ if(c[i]>='0'&&c[i]<='9') c[i]=c[i++]-48; else if(c[i]>='A'&&c[i]<='F') c[i]=c[i++]-55; else if(c[i]>='a'&&c[i]<='f') c[i]=c[i++]-87; else { goto end; }} w=k=i=0; while(i<16){ for(j=3;j>=0;j--) { MingW64bit[i*4+j]=c[i]%2;c[i]/=2; if(MingW64bit[i*4+j]==1) w++;} i++;} //校验位i=16;while(i<18){ for(j=3;j>=0;j--) { ouj[(i-16)*4+j]=c[i]%2;c[i]/=2; if(ouj[(i-16)*4+j]==1) k++;} i++;} Decryp(MingW64bit,Key16);//解密函数,输入密文MingW64bit,和密钥Key16。 Bit64ToChar8(MingW64bit,Mybuff); //把明文的二进制串转换成字符串 for(i=0;i<10;i++) total[i]=jiou[i]; if(k>=4){ if(w%2!=0) { char joresult[7]="true;\n"; for(i=10;i<16;i++) total[i]=joresult[i-10];} else{ char joresult[7]="false\n"; for(i=10;i<16;i++) total[i]=joresult[i-10]; }}else{ if(w%2==0) {char joresult[7]="true;\n"; for(i=10;i<16;i++) total[i]=joresult[i-10];} else{ char joresult[7]="false\n"; for(i=10;i<16;i++) total[i]=joresult[i-10]; } } char mw[]="明文:"; for(i=16;i<22;i++) total[i]=mw[i-16]; for(i=22;i<30;i++) total[i]=Mybuff[i-22]; total[30]='.'; total[31]='\0'; // IDC_EDIT1=Mybuff[0]; // }end : m_output=total;UpdateData(false);}版权所有,如需转载请标明出处,谢谢
0 0
- DES译码程序的MFC实现
- 哈夫曼编/译码演示系统的C程序
- 使用javascript开发的编码译码程序
- 哈夫曼编/译码的设计与实现
- 哈夫曼树构建,编码,译码的实现------数据结构
- 哈夫曼编码/译码的设计与实现
- 哈夫曼编/译码系统的设计与实现
- DES加密程序实现,UNIX/Linux的接口实现
- C51 曼彻斯特译码程序
- DES算法的实现
- DES加密算法的实现
- DES加密算法的实现
- DES 加密算法的实现
- DES加密算法的实现
- Des算法的实现
- AES, DES的实现
- DES算法的实现
- DES的C++实现
- C语言中的几种排序方法
- PHP中const和define()定义常量的细节区别
- C和指针读书笔记(第一章)
- OSI七层与TCP/IP五层网络架构详解
- struts2 快速开发模式
- DES译码程序的MFC实现
- CMake构建PCL项目
- Android文件操作(SD卡、缓存)工具类
- 分布式原理与实战(四) 以FDB为例之同步化
- 【LeetCode】House Robber I,II,III解析
- Bootstrap 导航条
- 未解决的问题
- oracle学习总结---------用户的设置
- 第四周项目三 单链表应用-连接