#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]
确实可以回去了