代码插件测试
如果看到代码是完整且整齐的,则说明插件测试成功.
/* * 功能描述: DES单元运算 * 参数列表: Out - 8字节运算结果 * In - 8字节数据 * pSubKey - 过程密钥 * Typde - {ENCRYPT(加密),DECRYPT(解密)} * 返 回 值: 无 */ void SingleDes(char Out[8], char In[8], char Type) { int i = 0; char M[64], tmp[32]; char *Li = &M[0]; char *Ri = &M[32]; memset(M, 0, sizeof(char)*sizeof(M)); memset(tmp, 0, sizeof(char)*sizeof(tmp)); ByteToBit(M, In, 64); Transform(M, M, IP_Table, 64); //初始置换(IP置换) if( Type == ENCRYPT ) { for(i=0; i<16; i++) { memcpy(tmp, Ri, 32); //保存右半部分 F_func(Ri, (*pSubKey)[i]); //对右半部分和密钥进行操作 Xor(Ri, Li, 32); //右半部分与左半部分异或操作 memcpy(Li, tmp, 32); //原来的右半部分放至左半部分 } } else { for(i=15; i>=0; i--) //加密和解密只是顺序不同 { memcpy(tmp, Ri, 32); F_func(Ri, (*pSubKey)[i]); Xor(Ri, Li, 32); memcpy(Li, tmp, 32); } } RotateL(M,64,32); //左右交换(循环移位) Transform(M, M, IPR_Table, 64); //逆初值置换(IPR置换) BitToByte(Out, M, 64); //bit流转换为字节 }