Основы криптографии
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
>
x00000100,
x04010104,
x04000100,
x00000104,
x04010000,
x00000004,
x04000000,
x00010104,
x00010000,
x00010100,
x00000104,
x04000104,
x04010100,
x04010004,
x00010100,
x00000100,
x04010004,
x04000000,
x04010104,
x00010000,
x00000004,
x00010104,
x00000004,
x04000100,
x04010000,
x00000100,
x00010104,
x00010004,
x00000000,
x00010000,
x04000100,
x04010104,
x00010004,
x04000004,
x00010000,
x00000000,
x04000104,
x04010004,
x00000100,
x00000004,
x04010104,
x04000000,
x04010100,
x00010100,
x04000004,
x00000104,
x04010004,
x04010000,
x00000104,
x04010100,
x04000000,
x04000104,
x00010100,
//; sp[3]
x00104080,
x40100080,
x40100080,
x40000000,
x40104000,
x40004080,
x00004080,
x00100080,
x00000000,
x00104000,
x00104000,
x40104080,
x40000080,
x00000000,
x40004000,
x00004080,
x00000080,
x00100000,
x00004000,
x00104080,
x40000000,
x00004000,
x00100080,
x40100000,
x40004080,
x00000080,
x40100000,
x40004000,
x00100000,
x40104000,
x40104080,
x40000080,
x40004000,
x00004080,
x00104000,
x40104080,
x40000080,
x00000000,
x00000000,
x00104000,
x40100000,
x40004000,
x40004080,
x00000080,
x00104080,
x40100080,
x40100080,
x40000000,
x40104080,
x40000080,
x00000080,
x00100000,
x00004080,
x00100080,
x40104000,
x40004080,
x00100080,
x40100000,
x00004000,
x00104080,
x40000000,
x00004000,
x00100000,
x40104000,
//; sp[4]
x80000000,
x80000401,
x00000401,
x80000021,
x00000400,
x80000000,
x00000020,
x00000401,
x80000420,
x00000400,
x80000001,
x80000420,
x80000021,
x00000421,
x80000400,
x00000020,
x00000001,
x00000420,
x00000420,
x00000000,
x80000020,
x80000421,
x80000421,
x80000001,
x00000421,
x80000020,
x00000000,
x00000021,
x80000401,
x00000001,
x00000021,
x80000400,
x00000400,
x80000021,
x80000000,
x00000001,
x00000020,
x00000401,
x80000021,
x80000420,
x80000001,
x00000020,
x00000421,
x80000401,
x80000420,
x80000000,
x00000001,
x00000421,
x80000421,
x80000400,
x00000021,
x80000421,
x00000401,
x00000000,
x00000420,
x00000021,
x80000400,
x80000001,
x80000020,
x00000400,
x00000000,
x00000420,
x80000401,
x80000020,
//; sp[5]
x08000010,
x00002010,
x00200000,
x08202010,
x00002010,
x08000000,
x08202010,
x00002000,
x00200010,
x08202000,
x00002000,
x08000010,
x08002000,
x00200010,
x00000010,
x08200000,
x00000000,
x08002000,
x08200010,
x00200000,
x00202000,
x08200010,
x08000000,
x08002010,
x08002010,
x00000000,
x08202000,
x00202010,
x08200000,
x00202000,
x00202010,
x00000010,
x00200010,
x08000000,
x08002010,
x00202000,
x08202010,
x00002000,
x08200000,
x08000010,
x00002000,
x00200010,
x00000010,
x08200000,
x08000010,
x08202010,
x00202000,
x00002010,
x08202000,
x00202010,
x00000000,
x08002010,
x08000000,
x00200000,
x00002010,
x08202000,
x00200000,
x08002000,
x08200010,
x00000000,
x00202010,
x00000010,
x08002000,
x08200010,
//; sp[6]
x00001000,
x01001002,
x01040002,
x00000000,
x00040000,
x01040002,
x01041000,
x00041002,
x01041002,
x00001000,
x00000000,
x01000002,
x01000000,
x00000002,
x01001002,
x01040000,
x00040002,
x01041000,
x01001000,
x00040002,
x01000002,
x00001002,
x00041002,
x01001000,
x00001002,
x00040000,
x01040000,
x01041002,
x00041000,
x01000000,
x00000002,
x00041000,
x00000002,
x00041000,
x00001000,
x01040002,
x01040002,
x01001002,
x01001002,
x01000000,
x01001000,
x00000002,
x00040002,
x00001000,
x00041002,
x01040000,
x01041000,
x00041002,
x01040000,
x01000002,
x01041002,
x00001002,
x00041000,
x00000000,
x01000000,
x01041002,
x00000000,
x01041000,
x00001002,
x00040000,
x01000002,
x00040002,
x00040000,
x01001000,
//; sp[7]
x20080008,
x00080000,
x00000200,
x20080208,
x00000008,
x20080008,
x20000000,
x00000008,
x20000200,
x00000208,
x20080208,
x00080200,
x00080208,
x20080200,
x00080000,
x20000000,
x00000208,
x20000008,
x00080008,
x20080000,
x00080200,
x20000200,
x20000208,
x00080208,
x20080000,
x00000000,
x00000000,
x20000208,
x20000008,
x00080008,
x20080200,
x00000200,
x20080200,
x00000200,
x00080208,
x00080000,
x20000000,
x20000208,
x00080000,
x20080200,
x00080008,
x20000000,
x20000008,
x00000208,
x20000208,
x00000008,
x00000200,
x20080008,
x00000000,
x20080208,
x20000200,
x20000008,
x00000208,
x00080008,
x20080008,
x00000000,
x20080208,
x00080200,
x00080200,
x20080000,
x20080000,
x20000200,
x00000008,
x00080208
};
//unsigned char en_keytbl[16*8];
//int loopcount;
//unsigned int block[2];
des_encrypt(unsigned int *bl,unsigned char* kp,unsigned int mode)
{
static unsigned char * keyptr;
static unsigned int loopcount;
static unsigned int block[2];
keyptr=kp;
block[0]=bl[0];
block[1]=bl[1];
_asm
{
cmp [mode],0
jz decrypt_block
;--------------------------------------------------------------------
; Local PERMUTE for encrypt_block & decrypt_block
;input conditions:
; esi:perm. table ptr
; edx:eax input high and low
; ebp:edi output high and low
; destroys all registers except cx!
;----------------------------------------------------------------------
; void encrypt_block(void);
; encrypts data in (unsigned char block[8] ),
; returning it in the same block[].
;;encrypt_block:esiediebp
esi, offset p1edx,dword ptr[block]eax,dword ptr[block+4]l_permute ;returns with output in ebp:edi
eax,edi ;f() input is ebp:eax
esi,[keyptr]
esi,7[loopcount],16 ;yes, this is the full 16 round DES
:
and ebx,0ffffh edx,eax ;prepare to operate on right halfecx,eax ;and save it: it becomes left halfedx ;edx has f() inputeax,eax ;output gets zeroedi,offset sp_table+7*4*64 ;point to combined s & p boxesedx,3 ;prepare for E() function
;THE F() FUNCTION (encrypt)bx,dx ;nybble 1bl,[esi] ;XOR with key bitsbx,11111100besieax, [ebx+edi] ;set bits for this nybbleedx,4 ; (E function)edi,4*64 ;sizeof(long)*sizeof(table)
bx,dx ;nybble 2bl,[esi] ;XOR with key bitsbx,11111100besieax, [ebx+edi] ;set bits for this nybbleedx,4 ; (E function)edi,4*64 ;sizeof(long)*sizeof(table)
bx,dx ;nybble 3bl,[esi] ;XOR with key bitsbx,11111100besieax, [ebx+edi] ;set bits for this nybbleedx,4 ; (E function)edi,4*64 ;sizeof(long)*sizeof(table)
bx,dx ;nybble 4bl,[esi] ;XOR with key bitsbx,11111100besieax, [ebx+edi] ;set bits for this nybbleedx,4 ; (E function)edi,4*64 ;sizeof(long)*sizeof(table)
bx,dx ;nybble 5bl,[esi] ;XOR with key bitsbx,11111100besieax, [ebx+edi] ;set bits for this nybbleedx,4 ; (E function)edi,4*64 ;sizeof(long)*sizeof(table)
bx,dx ;nybble 6bl,[esi] ;XOR with key bitsbx,11111100besieax, [ebx+edi] ;set bits for this nybbleedx,4 ; (E function)edi,4*64 ;sizeof(long)*sizeof(table)
bx,dx ;nybble 7bl,[esi] ;XOR with key bitsbx,11111100besieax, [ebx+ed