📄 main.cpp
字号:
#include "iostream"
#include "stdlib.h"
#include "string"
using namespace std;
#include "DES.h"
char* Convert2Bin(char[]);
char* Binary(char);
void InsertInArray(char*,char[]);
char* Convert2Hex(char*);
char Hexa(char,char,char,char);
void main()
{
char ed;
char *data = new char[DATA_LENGTH];
char *key = new char[KEY_TOTAL_LENGTH];
data[0] = '\0';
key[0] = '\0';
char *tData = new char[64];
char *tKey = new char[64];
cout << endl << "Encryption/Decryption? E/D: ";
cin >> ed;
if (tolower(ed) == 'e')
{
//perform encryption
cout << endl << "Starting Encryption..." << endl;
cout << endl << "Enter Data to encrypt: ";
cin >> tData;
cout << endl << "Enter Encryption Key: ";
cin >> tKey;
#ifdef SDES
strcpy(data,tData);
strcpy(key,tKey);
#else
strcpy(data,Convert2Bin(tData));
strcpy(key,Convert2Bin(tKey));
#endif
CDES *des = new CDES(data,key);
char* cipher = des->Encrypt();
#ifdef DES
cipher = Convert2Hex(cipher);
#endif
cout << endl << "Encrypted Text: " << cipher << endl;
}
else if (tolower(ed) == 'd')
{
//perform decryption
cout << endl << "Starting Decryption..." << endl;
cout << endl << "Enter Data to Decrypt: ";
cin >> tData;
cout << endl << "Enter Decryption Key: ";
cin >> tKey;
#ifdef SDES
strcpy(data,tData);
strcpy(key,tKey);
#else
strcpy(data,Convert2Bin(tData));
strcpy(key,Convert2Bin(tKey));
#endif
CDES *des = new CDES(data,key);
char *plain = des->Decrypt();
#ifdef DES
plain = Convert2Hex(plain);
#endif
cout << endl << "Decrypted Text: " << plain << endl;
}
else
{
//invalid choice... neither e nor d
cout << endl << "We support only e and d..." << endl;
}
}
char* Convert2Hex(char* out)
{
int i,j;
char hexchar;
char *put = new char[DATA_LENGTH/4];
for (i = 0,j = 0 ; i < DATA_LENGTH ; j++, i += 4)
{
hexchar = Hexa(out[i],out[i+1],out[i+2],out[i+3]);
put[j] = hexchar;
}
put[j] = '\0';
return put;
}
char Hexa(char a, char b, char c, char d)
{
if (a == '0' && b == '0' && c == '0' && d == '0')
return '0';
else if (a == '0' && b == '0' && c == '0' && d == '1')
return '1';
else if (a == '0' && b == '0' && c == '1' && d == '0')
return '2';
else if (a == '0' && b == '0' && c == '1' && d == '1')
return '3';
else if (a == '0' && b == '1' && c == '0' && d == '0')
return '4';
else if (a == '0' && b == '1' && c == '0' && d == '1')
return '5';
else if (a == '0' && b == '1' && c == '1' && d == '0')
return '6';
else if (a == '0' && b == '1' && c == '1' && d == '1')
return '7';
else if (a == '1' && b == '0' && c == '0' && d == '0')
return '8';
else if (a == '1' && b == '0' && c == '0' && d == '1')
return '9';
else if (a == '1' && b == '0' && c == '1' && d == '0')
return 'A';
else if (a == '1' && b == '0' && c == '1' && d == '1')
return 'B';
else if (a == '1' && b == '1' && c == '0' && d == '0')
return 'C';
else if (a == '1' && b == '1' && c == '0' && d == '1')
return 'D';
else if (a == '1' && b == '1' && c == '1' && d == '0')
return 'E';
else
return 'F';
}
char* Convert2Bin(char data[])
{
unsigned int i;
char *bins;
char *array = new char[DATA_LENGTH];
array[0] = '\0';
// cout << endl << "Data to Convert : " << data;
for (i = 0 ; i < strlen(data) ; i++)
{
bins = Binary(data[i]);
// cout << endl << bins;
InsertInArray(bins,array);
// cout << endl << "Array : " << array;
}
return array;
}
void InsertInArray(char* b,char* arr)
{
int i,j;
for (i = strlen(arr),j = 0 ; j < 4 ; i++,j++)
{
arr[i] = b[j];
}
arr[i] = '\0';
}
char* Binary(char c)
{
switch(c)
{
case '0':
return "0000";
case '1':
return "0001";
case '2':
return "0010";
case '3':
return "0011";
case '4':
return "0100";
case '5':
return "0101";
case '6':
return "0110";
case '7':
return "0111";
case '8':
return "1000";
case '9':
return "1001";
case 'A':
return "1010";
case 'B':
return "1011";
case 'C':
return "1100";
case 'D':
return "1101";
case 'E':
return "1110";
case 'F':
return "1111";
default:
return "";
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -