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

📄 hex.cpp

📁 用des算法加密文件的小程序
💻 CPP
字号:
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>

int tempdata[16];
int data[64];
int data_num=0;
int temp_out[4];
int data_out[16];
int out_number=0;
char chout;

char charToint(int n){
	char rn;
	if((n>=48)&&(n<=57))
	rn='n';	//number
	else{
	  if((n==97)||(n==65))
	  rn='a';
	  else{
	   if((n==98)||(n==66))
	   rn='b';
	   else{
	     if((n==99)||(n==67))
	     rn='c';
	     else{
	       if((n==100)||(n==68))
	       rn='d';
	       else{
		 if((n==101)||(n==69))
		 rn='e';
		 else{
		   if((n==102)||(n==70))
		   rn='f';
		   else
		   rn='w';	//wrong
		     }//else
		   }
		 }
	       }
	     }
	   }
	return rn;
}//charToint

int judge(char sj){
	int _rj;
	char rj;
	int _sj=int(sj);
	rj=charToint(_sj);
	switch(rj){
	  case 'n':
	      _rj=int(sj)-48;
	      break;
	  case 'a':
	      _rj=10;
	      break;
	  case 'b':
	      _rj=11;
	      break;
	  case 'c':
	      _rj=12;
	      break;
	  case 'd':
	      _rj=13;
	      break;
	  case 'e':
	      _rj=14;
	      break;
	  case 'f':
	      _rj=15;
	      break;
	  default:
	      _rj=100;
	}//switch
	return _rj;
}//judge

int HtoD(char str){
	int ret;
	ret=judge(str);
	return ret;
}//HtoD

int BtoH(int* s,int num){
	int ret=0;
	ret=s[num-1]+s[num-2]*2+s[num-3]*4+s[num-4]*8;
	return ret;
}//BtoDec

void DtoB(int s){
	int temps=s;
	int temp[4];
	for(int i=0;i<4;i++){
	  temp[3-i]=temps%2;
	  temps=temps/2;
	  }//for
	for(int j=0;j<4;j++){
	  data[data_num]=temp[j];
	  data_num++;
	  }//for
}//DtoB

void Bit_Out(){
	int row_out=1;
	cout<<"This is responde data:"<<endl;
	for(int i=0;i<64;i++){
	   if(row_out<=8){
	      cout<<data[i]<<" ";
	      row_out++;
	      }//if
	   else{
	      cout<<endl;
	      row_out=1;
	      i--;
	      }//else
	}//for
}//Bit_Out

int outjudge(int n){
	int ret;
	if((n>=0)&&(n<=9))
	   ret=0;
	else{
	   ret=1;
	   switch(n){
	     case 10:
	       chout='a';
	       break;
	     case 11:
	       chout='b';
	       break;
	     case 12:
	       chout='c';
	       break;
	     case 13:
	       chout='d';
	       break;
	     case 14:
	       chout='e';
	       break;
	     default:
	       chout='f';
	   }//switch
	}//else
     return ret;
}//outjudge

void Hex_Out(){
	int row_out=1;
	for(int i=0;i<16;i++){
	    if(row_out<=2){
	      int jout=outjudge(data_out[i]);
	      if(jout==0)	//0-9
		cout<<data_out[i];
	      else
		cout<<chout;
	      row_out++;
	    }//if
	    else{
	      row_out=1;
	      i--;
	      cout<<" ";
	      }//else
	}//for
}//Hex_Out

void main()
{
	clrscr();
	int flag=1;
	char ch[16];
	while(flag==1){
	cout<<"Please input number(hex):";
	for(int i=0;i<16;i++)
	  cin>>ch[i];
	cout<<"------------------------"<<endl;
	int pos=0;
	//number(Hex) change to number(Decimal)
	for(i=0;i<16;i++){
	      tempdata[pos]=HtoD(ch[i]);
	      if(tempdata[pos]==100){
		 cout<<"Sorry! your input have wrong characters.please input again."<<endl;
		 break;
		 }//if
	      pos++;
	    if(i==15)
	    flag=0;
	}//for
	}//while
	//number(Decimal change to number(Bit)
	for(int i=0;i<16;i++){
	   DtoB(tempdata[i]);
	}//for
	Bit_Out();
	int fenzu=0;
	for(i=0;i<64;i++){
	     if(fenzu<4){
		temp_out[fenzu]=data[i];
		fenzu++;
		if(i==63)
		data_out[out_number]=BtoH(temp_out,4);
		}//if
	     else{
		//deal
		data_out[out_number]=BtoH(temp_out,4);
		out_number++;
		//put the number to data_out and change to char()
		fenzu=0;
		i--;
		}//else
	}//for
	cout<<endl;
	cout<<"------------------"<<endl;
	for(i=0;i<16;i++)
	  cout<<data_out[i]<<" ";
	cout<<endl;
	cout<<"------------------"<<endl;
	Hex_Out();
	getch();
}

⌨️ 快捷键说明

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