📄 main.cpp.bak
字号:
#include "des.h"
int main()
int i;
unsigned char ct[8],key[8]={'a','b','c','d','a','b','c','d'};
des_key skey;
printf("Please enter a hexadecimal integer which is equal to 16 digits:\n");
char ptHexNum[16];//用16位字符数组保存16位16进制数
gets(ptHexNum);
unsigned char ptBinHignNum[8],ptBinLowNum[8];
//将16位16进制数共64位按内存模型转变成8位字符数组ptNumtoCh中
unsigned char ptNumtoCh[9];
ptNumtoCh[8]=ct[8]='\0';
for(i=0;i<16;i++)
{
if(i%2==0)
{
switch(ptHexNum[i])//16进制数高位
{
case'0':ptBinHignNum[i/2]=char(0x00);break;
case'1':ptBinHignNum[i/2]=char(0x10);break;
case'2':ptBinHignNum[i/2]=char(0x20);break;
case'3':ptBinHignNum[i/2]=char(0x30);break;
case'4':ptBinHignNum[i/2]=char(0x40);break;
case'5':ptBinHignNum[i/2]=char(0x50);break;
case'6':ptBinHignNum[i/2]=char(0x60);break;
case'7':ptBinHignNum[i/2]=char(0x70);break;
case'8':ptBinHignNum[i/2]=char(0x80);break;
case'9':ptBinHignNum[i/2]=char(0x90);break;
case'a':
case'A':ptBinHignNum[i/2]=char(0xA0);break;
case'b':
case'B':ptBinHignNum[i/2]=char(0xB0);break;
case'c':
case'C':ptBinHignNum[i/2]=char(0xC0);break;
case'd':
case'D':ptBinHignNum[i/2]=char(0xD0);break;
case'e':
case'E':ptBinHignNum[i/2]=char(0xE0);break;
case'f':
case'F':ptBinHignNum[i/2]=char(0xF0);break;
default:printf("error...\n");
}
}
if(i%2==1)
{
switch(ptHexNum[i])//16进制数低位
{
case'0':ptBinLowNum[i/2]=char(0x00);break;
case'1':ptBinLowNum[i/2]=char(0x01);break;
case'2':ptBinLowNum[i/2]=char(0x02);break;
case'3':ptBinLowNum[i/2]=char(0x03);break;
case'4':ptBinLowNum[i/2]=char(0x04);break;
case'5':ptBinLowNum[i/2]=char(0x05);break;
case'6':ptBinLowNum[i/2]=char(0x06);break;
case'7':ptBinLowNum[i/2]=char(0x07);break;
case'8':ptBinLowNum[i/2]=char(0x08);break;
case'9':ptBinLowNum[i/2]=char(0x09);break;
case'a':
case'A':ptBinLowNum[i/2]=char(0x0A);break;
case'b':
case'B':ptBinLowNum[i/2]=char(0x0B);break;
case'c':
case'C':ptBinLowNum[i/2]=char(0x0C);break;
case'd':
case'D':ptBinLowNum[i/2]=char(0x0D);break;
case'e':
case'E':ptBinLowNum[i/2]=char(0x0E);break;
case'f':
case'F':ptBinLowNum[i/2]=char(0x0F);break;
default:printf("error...\n");
}
}
}
for(i=0;i<8;i++)
{
ptNumtoCh[i]=ptBinHignNum[i]^ptBinLowNum[i];
}
//校验输入字符变换后是否正确
for(i=0;i<8;i++)
{
printf("%X",int(ptNumtoCh[i]));
}
des_setup(key,8,0,&skey);
printf("\nNow The L vector and R vector is followed when program is encrypting:\n\n");
des_ecb_encrypt(ptNumtoCh,ct,&skey);
printf("\nNow The L vector and R vector is followed when program is decrypting:\n\n");
des_ecb_decrypt(ct,ptNumtoCh,&skey);
printf("The hexadecimal integer is followed which is encrypted:\n");
for(i=0;i<8;i++)
{
printf("%X",int(ptNumtoCh[i]));
}
printf("The string is followed after encrypted:\n");
printf("%s\n",ct);
//system("PAUSE");
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -