⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 declare.h

📁 DES加密解密算法,该程序是用DES 加密算法对文件进行加密
💻 H
字号:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<math.h>
#include<iostream.h>
bool Text[64]={0},Key[64]={0},Key1[56]={0},L[17][32]={0},R[17][32]={0},Text_IP[8][8]={0},C[17][28]={0},D[17][28]={0},CD[17][56]={0};
bool SubKey[16][48]={0},Fun[16][32]={0},Fun2[16][32]={0},Ciphertext[64]={0},Plaintext[64]={0},DeL[17][32]={0},DeR[17][32]={0};
  int T[16];//16位明文
  char k[7];
  int IP[8][8]=
  { //初始置换IP矩阵 
      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 
  }; 

  int IP_1[8][8]=
  {//IP_1
	  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
  };

  int PC_1[8][7]=
  { //PC-1 
	  {57, 49, 41, 33, 25, 17, 9}, 
	  {1, 58, 50, 42, 34, 26, 18}, 
	  {10, 2, 59, 51, 43, 35, 27}, 
	  {19, 11, 3, 60, 52, 44, 36}, 
	  {63, 55, 47, 39, 31, 23, 15}, 
	  {7, 62, 54, 46, 38, 30, 22}, 
	  {14, 6, 61, 53, 45, 37, 29}, 
	  {21, 13, 5, 28, 20, 12, 4} 
  }; 

  int PC_2[8][6]=
  { //PC-2 
      14, 17 ,11 ,24 , 1 , 5, 
      3 ,28 ,15 , 6 ,21 ,10, 
      23, 19, 12, 4, 26, 8, 
      16, 7, 27, 20 ,13 , 2, 
      41, 52, 31, 37, 47, 55, 
      30, 40, 51, 45, 33, 48, 
      44, 49, 39, 56, 34, 53, 
      46, 42, 50, 36, 29, 32 
  }; 

  int LS[16]={1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1};


  int E_Table[8][6]=
  {//E表
	 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 
  };
  int S_Box[8][4][16]={ //S盒
    // S1 
    14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7, 
    0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8, 
    4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0, 
    15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13, 
    // S2 
    15, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, 10, 
    3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5, 
    0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15, 
    13, 8, 10, 1, 3, 15, 4, 2, 11, 6, 7, 12, 0, 5, 14, 9, 
    // S3 
    10, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8, 
    13, 7, 0, 9, 3, 4, 6, 10, 2, 8, 5, 14, 12, 11, 15, 1, 
    13, 6, 4, 9, 8, 15, 3, 0, 11, 1, 2, 12, 5, 10, 14, 7, 
    1, 10, 13, 0, 6, 9, 8, 7, 4, 15, 14, 3, 11, 5, 2, 12, 
    // S4 
    7, 13, 14, 3, 0, 6, 9, 10, 1, 2, 8, 5, 11, 12, 4, 15, 
    13, 8, 11, 5, 6, 15, 0, 3, 4, 7, 2, 12, 1, 10, 14, 9, 
    10, 6, 9, 0, 12, 11, 7, 13, 15, 1, 3, 14, 5, 2, 8, 4, 
    3, 15, 0, 6, 10, 1, 13, 8, 9, 4, 5, 11, 12, 7, 2, 14, 
    // S5 
    2, 12, 4, 1, 7, 10, 11, 6, 8, 5, 3, 15, 13, 0, 14, 9, 
    14, 11, 2, 12, 4, 7, 13, 1, 5, 0, 15, 10, 3, 9, 8, 6, 
    4, 2, 1, 11, 10, 13, 7, 8, 15, 9, 12, 5, 6, 3, 0, 14, 
    11, 8, 12, 7, 1, 14, 2, 13, 6, 15, 0, 9, 10, 4, 5, 3, 
    // S6 
    12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11, 
    10, 15, 4, 2, 7, 12, 9, 5, 6, 1, 13, 14, 0, 11, 3, 8, 
    9, 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10, 1, 13, 11, 6, 
    4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13, 
    // S7 
    4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1, 
    13, 0, 11, 7, 4, 9, 1, 10, 14, 3, 5, 12, 2, 15, 8, 6, 
    1, 4, 11, 13, 12, 3, 7, 14, 10, 15, 6, 8, 0, 5, 9, 2, 
    6, 11, 13, 8, 1, 4, 10, 7, 9, 5, 0, 15, 14, 2, 3, 12, 
    // S8 
    13, 2, 8, 4, 6, 15, 11, 1, 10, 9, 3, 14, 5, 0, 12, 7, 
    1, 15, 13, 8, 10, 3, 7, 4, 12, 5, 6, 11, 0, 14, 9, 2, 
    7, 11, 4, 1, 9, 12, 14, 2, 0, 6, 10, 13, 15, 3, 5, 8, 
    2, 1, 14, 7, 4, 10, 8, 13, 15, 12, 9, 0, 3, 5, 6, 11 
  }; 
int P_Table[8][4]=
{
	16,7,20,21,
	29,12,28,17,
	1,15,23,26,
	5,18,31,10,
	2,8,24,14,
	32,27,3,9,
	19,13,30,6,
	22,11,4,25
};
void InitRead();//从文件中读入数据
void InitKey();
bool XOR(bool &a,bool &b);//异或函数
void Binary(int n);//将字符转化成8421BCD码
void Binary1(int n);//将字符转化成二进制码
void Binary2(int n,bool a[4]);//将十进制数转化为四位二进制数
void MakeSubKey();//产生子密钥
void Function(bool Right[32],int x);//加密过程中产生子密钥函数
void Function2(bool Left[32],int x);//解密过程中产生子密钥函数
void Encode();//加密过程
void Decode();//解密过程
void OutputCiphertext();//输出密文到Ciphertext.txt文件中
void OutputPlaintext();//输出解密后的明文到Plaintext.txt中




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -