实 验 二 DES 加 密 与 解 密 算 法 的 实 现 【实验目的】 1、理解 DES 加密与解密的程序设计算法思想。 2、加深对数据加密与解密的理解 3、掌握 DES 加密算法思想,提高信息安全的编程能力 【实验内容】 编写 DES 加密与解密程序,实现对信息的加密与解密 源程序: #include "stdio.h" #include "iostream.h" #include "memory.h" static void F_func(bool In[32], const bool Ki[48]);// F 函数 static void S_func(bool Out[32], const bool In[48]);// S 盒代替 static void Transform(bool *Out, bool *In, const char *Table, int len); static void Xor(bool *InA, const bool *InB, int len);// 异或 static void RotateL(bool *In, int len, int loop);// 循环左移 static void ByteToBit(bool *Out, const char *In, int bits); static void BitToByte(char *Out, const bool *In, int bits); // 初始变换 const static char IP[64] = { 58, 50, 42, 34, 26, 18, 10, 2, 60, 52, 44, 36, 28, 20, 12, 4, 62, 54, 46, 38, 30, 22, 14, 6, 64, 56, 48, 40, 32, 24, 16, 8, 57, 49, 41, 33, 25, 17, 9, 1, 59, 51, 43, 35, 27, 19, 11, 3, 61, 53, 45, 37, 29, 21, 13, 5, 63, 55, 47, 39, 31, 23, 15, 7 }; // 末置换 const static char IPR[64] = { 40, 8, 48, 16, 56, 24, 64, 32, 39, 7, 47, 15, 55, 23, 63, 31, 38, 6, 46, 14, 54, 22, 62, 30, 37, 5, 45, 13, 53, 21, 61, 29, 36, 4, 44, 12, 52, 20, 60, 28, 35, 3, 43, 11, 51, 19, 59, 27, 34, 2, 42, 10, 50, 18, 58, 26, 33, 1, 41, 9, 49, 17, 57, 25 }; // 扩展置换 static const char E[48] = { 32, 1, 2, 3, 4, 5, 4, 5, 6, 7, 8, 9, 8, 9, 10, 11, 12, 13, 12, 13, 14, 15, 16, 17, 16, 17, 18, 19, 20, 21, 20, 21, 22, 23, 24, 25, 24, 25, 26, 27, 28, 29, 28, 29, 30, 31, 32, 1 }; // 作用在S 盒的32 位输出结果上的P 变换 const static char P[32] = { 16, 7, 20, 21, 29, 12, 28, 17, 1, 15, 23, 26, 5, 18, 31,...