#include using namespace std; c置换 const static char Final_Table[] = { 最终置换 }; const static char S_Box[8][] = { }; const static char Rar_Table[] = { 压缩置换 }; const static char Exp_Table[] = { 扩展置换 }; const static char P_Table[]={ 置换 }; const static char KeyRar_Table[]={ }; //设置全局变量,16轮密钥 bool key[16][48]={{0}}; void ByteToBit(bool *Out,char *In,int bits) 字节到位转换函数 { } void BitToByte(char *Out,bool *In,int bits) 位到字节转换函数 { } v按位异或 { } v密钥生成函数 { 字节到位的转换 密钥压缩为56位 轮密钥产生 分左右两块循环左移 压缩置换并储存 } void DES(char Out[8],char In[8],bool Type)//加密核心程序,Type=0时加密,反之解密 { 初始置换 bool *Li=&MW[0],*Ri=&MW[32]; 右明文扩展置换 加密过程 右明文扩展置换 for(i=0;i<48;i++) 盒置换*/ 置换 异或 交换左右明文 { Ri[i]=tmp[i]; 位到字节的转换 解密过程 右明文扩展置换 盒置换*/ 置换 异或 交换左右明文 { Ri[i]=tmp[i]; 位到字节的转换 } bool RunDes(char *Out, char *In, int datalength, char *Key, bool Type) //加密运行函数,判断输入以及对输入文本8字节分割 { } int main() { 请输入密钥(8位):" <<"\\n"; cout << "\\n"; 加密 加密前----" << "\\n"; for(i_mf=0;i_mf 加密后----" << "\\n"; 此处进行不同密钥输入测试 请输入密钥(8位):" <<"\\n"; cout << "\\n"; 解密 解密后----" << "\\n"; for(i_mf=0;i_mf } 二、程序编译、运行结果图: 三、程序总体框架图: 四、程序实现流程图:下载本文