第三步3.2:信息[8] 和上面的[8][8]去解密 得到新的信息[8]

#include<stdio.h>
#include<string.h>
typedef unsigned char  uint8_t;
typedef unsigned short uint16_t;


void desData(unsigned char desMode,unsigned char* inData, unsigned char* outData,unsigned char (*subkey)[8])
{
 
	int i;
	int j=0;
	if(desMode==0)
	{
		for(i=0;i<8;i++)
		{
			for(j=0;j<8;j++)
				inData[j]=inData[j]^ subkey[i][j];
		}
		for(j=0;j<8;j++)
			outData[j]=inData[j];
	}
	else if(desMode==1)
	{
		for(i=7;i>=0;i--)
			for(j=0;j<8;j++)
				inData[j]=inData[j]^ subkey[i][j];
		for(j=0;j<8;j++)
			outData[j]=inData[j];
	}
}

unsigned char subkey[8][8]={ \
0x80,  0x4B,  0x68,  0x89,  0xC0,  0x1F,  0x09,  0xE8,  \
0x7D,  0xF8,  0xE0,  0x48,  0x89,  0x00,  0x80,  0x8B,  \
0x18,  0x6C,  0x74,  0x01,  0x2C,  0x04,  0x77,  0x91,  \
0x13,  0x31,  0x09,  0x8D,  0x41,  0x54,  0xA8,  0x96,  \
0x95,  0x47,  0xC0,  0x98,  0x50,  0x8E,  0x41,  0x23,  \
0x0D,  0x07,  0xC4,  0x63,  0x95,  0x84,  0x10,  0x93,  \
0x80,  0x90,  0x7D,  0xE1,  0x0A,  0x01,  0xC6,  0x72,  \
0x18,  0x68,  0x09,  0x04,  0x36,  0x43,  0xF8,  0x35};

unsigned char str[8]={0xF6,0x56,0x21,0x33,0x9E,0x25,0x29,0xD3};
unsigned char presult[8];
int main(void)
{
	int i;
	desData(1,str,presult,subkey);


	for(i=0;i<8;i++)	
    	printf("%02X  ",presult[i]);
        printf("\n");
/////////////////////////////自己玩儿/////////////
   desData(0,presult,str,subkey); 
   	for(i=0;i<8;i++)	
    	printf("%02X  ",str[i]);
   return 0;
}

00  00  A4  60  43  22  10  40  
F6  56  21  33  9E  25  29  D3  [Finished in 1.5s]

确实可以回去了

猜你喜欢

转载自blog.csdn.net/weixin_42381351/article/details/81699762
8