develop/libraries/crypt_des: Post-SVN tidy
All checks were successful
Build system / Check kernel codestyle (pull_request) Successful in 21s
Build system / Build (pull_request) Successful in 4m13s

- Move source code from `trunk` into program root directory.
- Update ASM include paths.
- Note: Line endings standardised from `CRLF` > `LF`, so best to view diffs with whitespace changes hidden.
This commit is contained in:
2025-05-25 12:55:03 +01:00
parent 324c508613
commit aad8c2723f
4 changed files with 466 additions and 460 deletions

View File

@@ -1,460 +1,466 @@
; ; SPDX-License-Identifier: NOASSERTION
; áèáëèîòåêà äëÿ øèôðîâàíèÿ ïî àëãîðèòìó DES ;
;
; Text encoded with Code Page Windows 1251 - Cyrillic
format MS COFF
public EXPORTS
section '.flat' code readable align 16 ;
; áèáëèîòåêà äëÿ øèôðîâàíèÿ ïî àëãîðèòìó DES
include '../../../../macros.inc' ;
include '../../../../proc32.inc'
format MS COFF
;description: public EXPORTS
; ôóíêöèÿ øèôðîâàíèÿ ôàéëîâ section '.flat' code readable align 16
;input:
; key - âõîäíîé êëþ÷ 64 áèò include '../../../macros.inc'
; mem_keys - ïàìÿòü äëÿ ôîðìèðîâàíèÿ êëþ÷åé (ðàçìåð 120 áàéò) include '../../../proc32.inc'
; block - óêàçàòåëü íà ïåðâûé øèôðóåìûé 8 áàéòíûé áëîê
; b_count - ÷èñëî áëîêîâ äëÿ øèôðîâàíèÿ ;description:
align 4 ; ôóíêöèÿ øèôðîâàíèÿ ôàéëîâ
proc des_encryption, key:dword, mem_keys:dword, block:dword, b_count:dword ;input:
locals ; key - âõîäíîé êëþ÷ 64 áèò
n dd ? ;ïåðåìåííàÿ öèêëà ; mem_keys - ïàìÿòü äëÿ ôîðìèðîâàíèÿ êëþ÷åé (ðàçìåð 120 áàéò)
endl ; block - óêàçàòåëü íà ïåðâûé øèôðóåìûé 8 áàéòíûé áëîê
pushad ; b_count - ÷èñëî áëîêîâ äëÿ øèôðîâàíèÿ
stdcall encryption_key, [key],[mem_keys] align 4
proc des_encryption, key:dword, mem_keys:dword, block:dword, b_count:dword
;íà÷àëüíàÿ ïåðåñòàíîâêà ip locals
mov ecx,[b_count] n dd ? ;ïåðåìåííàÿ öèêëà
cmp ecx,1 endl
jl .end_funct pushad
mov edi,[block] stdcall encryption_key, [key],[mem_keys]
cld
@@: ;íà÷àëüíàÿ ïåðåñòàíîâêà ip
mov esi,[mem_keys] mov ecx,[b_count]
add esi,112 cmp ecx,1
stdcall fun_convert_bits, edi, esi, oper_ip, 64 jl .end_funct
movsd mov edi,[block]
movsd cld
loop @b @@:
mov esi,[mem_keys]
mov ecx,[b_count] add esi,112
mov esi,[block] stdcall fun_convert_bits, edi, esi, oper_ip, 64
;cld movsd
.cycle_3: movsd
mov dword[n],0 loop @b
.funct_f:
mov edi,[mem_keys] mov ecx,[b_count]
add edi,112 mov esi,[block]
;ïåðåñòàâëÿåì áëîê R0(32) ïî ìàòðèöå e ;cld
stdcall fun_convert_bits, esi, edi, oper_e, 48 .cycle_3:
mov dword[n],0
;edi - R0~e (48 áèò) .funct_f:
;esi - L0R0 (64 áèòà) mov edi,[mem_keys]
stdcall fun_r0xorki_si, edi,[mem_keys],[n] add edi,112
;ïåðåñòàâëÿåì áëîê R0(32) ïî ìàòðèöå e
;edi - (R0~e xor ki)~Si (32 áèòà) stdcall fun_convert_bits, esi, edi, oper_e, 48
;ïåðåñòàíîâêà p
mov eax,edi ;edi - R0~e (48 áèò)
add eax,4 ;esi - L0R0 (64 áèòà)
stdcall fun_convert_bits, edi, eax, oper_p, 32 stdcall fun_r0xorki_si, edi,[mem_keys],[n]
;ïèøåì R0 â L0, è (L0 xor (R0~e xor ki)~Si) â R0 ;edi - (R0~e xor ki)~Si (32 áèòà)
mov edx,dword[esi+4] ;ïåðåñòàíîâêà p
mov ebx,dword[esi] mov eax,edi
xor edx,dword[eax] add eax,4
mov dword[esi],edx stdcall fun_convert_bits, edi, eax, oper_p, 32
mov dword[esi+4],ebx
;ïèøåì R0 â L0, è (L0 xor (R0~e xor ki)~Si) â R0
inc dword[n] mov edx,dword[esi+4]
cmp dword[n],16 mov ebx,dword[esi]
jl .funct_f xor edx,dword[eax]
mov dword[esi],edx
add esi,8 ;ïåðåõîä íà ñëåäóþùèé 64 áèòíûé øèôðóåìûé áëîê mov dword[esi+4],ebx
loop .cycle_3
inc dword[n]
;êîíå÷íàÿ ïåðåñòàíîâêà ip_inv cmp dword[n],16
mov ecx,[b_count] jl .funct_f
mov edi,[block]
;cld add esi,8 ;ïåðåõîä íà ñëåäóþùèé 64 áèòíûé øèôðóåìûé áëîê
@@: loop .cycle_3
mov esi,[mem_keys]
add esi,112 ;êîíå÷íàÿ ïåðåñòàíîâêà ip_inv
stdcall fun_convert_bits, edi, esi, oper_ip_inv, 64 mov ecx,[b_count]
movsd mov edi,[block]
movsd ;cld
loop @b @@:
mov esi,[mem_keys]
.end_funct: add esi,112
popad stdcall fun_convert_bits, edi, esi, oper_ip_inv, 64
ret movsd
endp movsd
loop @b
;description:
; ôóíêöèÿ ðàñøèôðîâàíèÿ ôàéëîâ .end_funct:
;input: popad
; key - âõîäíîé êëþ÷ 64 áèò ret
; mem_keys - ïàìÿòü äëÿ ôîðìèðîâàíèÿ êëþ÷åé (ðàçìåð 120 áàéò) endp
; block - óêàçàòåëü íà ïåðâûé ðàñøèôðîâûâàåìûé 8 áàéòíûé áëîê
; b_count - ÷èñëî áëîêîâ äëÿ ðàñøèôðîâàíèÿ ;description:
align 4 ; ôóíêöèÿ ðàñøèôðîâàíèÿ ôàéëîâ
proc des_decryption, key:dword, mem_keys:dword, block:dword, b_count:dword ;input:
locals ; key - âõîäíîé êëþ÷ 64 áèò
n dd ? ;ïåðåìåííàÿ öèêëà ; mem_keys - ïàìÿòü äëÿ ôîðìèðîâàíèÿ êëþ÷åé (ðàçìåð 120 áàéò)
endl ; block - óêàçàòåëü íà ïåðâûé ðàñøèôðîâûâàåìûé 8 áàéòíûé áëîê
pushad ; b_count - ÷èñëî áëîêîâ äëÿ ðàñøèôðîâàíèÿ
stdcall encryption_key, [key],[mem_keys] align 4
proc des_decryption, key:dword, mem_keys:dword, block:dword, b_count:dword
;íà÷àëüíàÿ ïåðåñòàíîâêà ip locals
mov ecx,[b_count] n dd ? ;ïåðåìåííàÿ öèêëà
cmp ecx,1 endl
jl .end_funct pushad
mov edi,[block] stdcall encryption_key, [key],[mem_keys]
cld
@@: ;íà÷àëüíàÿ ïåðåñòàíîâêà ip
mov esi,[mem_keys] mov ecx,[b_count]
add esi,112 cmp ecx,1
stdcall fun_convert_bits, edi, esi, oper_ip, 64 jl .end_funct
movsd mov edi,[block]
movsd cld
loop @b @@:
mov esi,[mem_keys]
mov ecx,[b_count] add esi,112
mov esi,[block] stdcall fun_convert_bits, edi, esi, oper_ip, 64
;cld movsd
.cycle_3: movsd
mov dword[n],16 loop @b
.funct_f:
dec dword[n] mov ecx,[b_count]
mov edi,[mem_keys] mov esi,[block]
add edi,112 ;cld
;ïåðåñòàâëÿåì áëîê L0(32) ïî ìàòðèöå e .cycle_3:
add esi,4 mov dword[n],16
stdcall fun_convert_bits, esi, edi, oper_e, 48 .funct_f:
sub esi,4 dec dword[n]
mov edi,[mem_keys]
;edi - L0~e (48 áèò) add edi,112
;esi - L0R0 (64 áèòà) ;ïåðåñòàâëÿåì áëîê L0(32) ïî ìàòðèöå e
stdcall fun_r0xorki_si, edi,[mem_keys],[n] add esi,4
stdcall fun_convert_bits, esi, edi, oper_e, 48
;edi - (L0~e xor ki)~Si (32 áèòà) sub esi,4
;ïåðåñòàíîâêà p
mov eax,edi ;edi - L0~e (48 áèò)
add eax,4 ;esi - L0R0 (64 áèòà)
stdcall fun_convert_bits, edi, eax, oper_p, 32 stdcall fun_r0xorki_si, edi,[mem_keys],[n]
;ïèøåì L0 â R0, è (R0 xor (L0~e xor ki)~Si) â L0 ;edi - (L0~e xor ki)~Si (32 áèòà)
mov edx,dword[esi] ;ïåðåñòàíîâêà p
mov ebx,dword[esi+4] mov eax,edi
xor edx,dword[eax] add eax,4
mov dword[esi+4],edx stdcall fun_convert_bits, edi, eax, oper_p, 32
mov dword[esi],ebx
;ïèøåì L0 â R0, è (R0 xor (L0~e xor ki)~Si) â L0
cmp dword[n],0 mov edx,dword[esi]
jg .funct_f mov ebx,dword[esi+4]
xor edx,dword[eax]
add esi,8 ;ïåðåõîä íà ñëåäóþùèé 64 áèòíûé øèôðóåìûé áëîê mov dword[esi+4],edx
loop .cycle_3 mov dword[esi],ebx
;êîíå÷íàÿ ïåðåñòàíîâêà ip_inv cmp dword[n],0
mov ecx,[b_count] jg .funct_f
mov edi,[block]
;cld add esi,8 ;ïåðåõîä íà ñëåäóþùèé 64 áèòíûé øèôðóåìûé áëîê
@@: loop .cycle_3
mov esi,[mem_keys]
add esi,112 ;êîíå÷íàÿ ïåðåñòàíîâêà ip_inv
stdcall fun_convert_bits, edi, esi, oper_ip_inv, 64 mov ecx,[b_count]
movsd mov edi,[block]
movsd ;cld
loop @b @@:
mov esi,[mem_keys]
.end_funct: add esi,112
popad stdcall fun_convert_bits, edi, esi, oper_ip_inv, 64
ret movsd
endp movsd
loop @b
;description:
; ïåðåñòàíîâêà áèòîâ ïî óêàùàííîé ìàòðèöå .end_funct:
;input: popad
; m_inp - ïàìÿòü ñ èñõîäíûìè äàííûìè ret
; m_out - ïàìÿòü äëÿ ïðåîáðàçîâàííûõ äàííûõ endp
; c_tbl - òàáëèöà äëÿ ïåðåñòàíîâêè
; tbl_s - ðàçìåð òàáëèöû äëÿ ïåðåñòàíîâêè ;description:
align 4 ; ïåðåñòàíîâêà áèòîâ ïî óêàùàííîé ìàòðèöå
proc fun_convert_bits, m_inp:dword, m_out:dword, c_tbl:dword, tbl_s:dword ;input:
pushad ; m_inp - ïàìÿòü ñ èñõîäíûìè äàííûìè
mov esi,[m_inp] ; m_out - ïàìÿòü äëÿ ïðåîáðàçîâàííûõ äàííûõ
mov edi,[m_out] ; c_tbl - òàáëèöà äëÿ ïåðåñòàíîâêè
mov eax,[c_tbl] ; tbl_s - ðàçìåð òàáëèöû äëÿ ïåðåñòàíîâêè
mov ecx,[tbl_s] align 4
xor edx,edx proc fun_convert_bits, m_inp:dword, m_out:dword, c_tbl:dword, tbl_s:dword
mov dword[edi],edx pushad
cmp ecx,32 mov esi,[m_inp]
jle @f mov edi,[m_out]
mov dword[edi+4],edx mov eax,[c_tbl]
@@: mov ecx,[tbl_s]
inc edx xor edx,edx
mov dword[edi],edx
cld cmp ecx,32
.cycle_0: jle @f
movzx ebx,byte[eax] mov dword[edi+4],edx
btr ebx,5 @@:
jc .tbl_h inc edx
bt dword[esi],ebx cld
jnc @f .cycle_0:
or dword[edi],edx movzx ebx,byte[eax]
@@: btr ebx,5
jmp @f jc .tbl_h
.tbl_h:
bt dword[esi+4],ebx bt dword[esi],ebx
jnc @f jnc @f
or dword[edi],edx or dword[edi],edx
@@: @@:
jmp @f
rol edx,1 .tbl_h:
jnc @f bt dword[esi+4],ebx
add edi,4 jnc @f
@@: or dword[edi],edx
inc eax @@:
loop .cycle_0
popad rol edx,1
ret jnc @f
endp add edi,4
@@:
;description: inc eax
; ñëîæåíèå R0(48) xor Ki(48) è 8 ïðåîáðàçîâàíèé ïî Si loop .cycle_0
;intput: popad
; data_r0 - R0 (48 áèò) ret
; data_key - óêàçàòåëü íà ìàññèâ êëþ÷åé (ïî 48 áèò) endp
; n - íîìåð êëþ÷à â ìàññèâå
;output: ;description:
; data_r0 - (R0 xor Ki)~Si (32 áèòà) ; ñëîæåíèå R0(48) xor Ki(48) è 8 ïðåîáðàçîâàíèé ïî Si
align 4 ;intput:
proc fun_r0xorki_si, data_r0:dword, data_key:dword, n:dword ; data_r0 - R0 (48 áèò)
pushad ; data_key - óêàçàòåëü íà ìàññèâ êëþ÷åé (ïî 48 áèò)
mov edi,[data_r0] ; n - íîìåð êëþ÷à â ìàññèâå
mov eax,[n] ;output:
imul eax,7 ;56 áèò - ðàññòîÿíèå ìåæäó êëþ÷àìè (ñàìè êëþ÷è 48 áèò) ; data_r0 - (R0 xor Ki)~Si (32 áèòà)
add eax,[data_key] align 4
proc fun_r0xorki_si, data_r0:dword, data_key:dword, n:dword
mov ebx,dword[eax] pushad
xor dword[edi],ebx mov edi,[data_r0]
mov ebx,dword[eax+4] ;mov bx,word[eax+4] mov eax,[n]
xor dword[edi+4],ebx ;xor word[edi+4],bx imul eax,7 ;56 áèò - ðàññòîÿíèå ìåæäó êëþ÷àìè (ñàìè êëþ÷è 48 áèò)
add eax,[data_key]
;edi - óêàçàòåëü íà çíà÷åíèå R0 xor Ki
mov eax,dword[edi] mov ebx,dword[eax]
mov ebx,dword[edi+4] xor dword[edi],ebx
;bx:eax - 48 áèò çíà÷åíèå R0 xor Ki mov ebx,dword[eax+4] ;mov bx,word[eax+4]
lea esi,[oper_s] ;âûáèðàåì òàáëèöó S0 xor dword[edi+4],ebx ;xor word[edi+4],bx
mov ecx,8
.cycle_0: ;edi - óêàçàòåëü íà çíà÷åíèå R0 xor Ki
mov dl,al mov eax,dword[edi]
and edx,31 mov ebx,dword[edi+4]
shr dl,1 ;bx:eax - 48 áèò çíà÷åíèå R0 xor Ki
jnc @f lea esi,[oper_s] ;âûáèðàåì òàáëèöó S0
bts edx,4 mov ecx,8
@@: .cycle_0:
bt eax,5 mov dl,al
jnc @f and edx,31
bts edx,5 shr dl,1
@@: jnc @f
add edx,esi bts edx,4
mov dl,byte[edx] ;dl - 4 áèòíîå çíà÷åíèå ïîëó÷åííîå èç Si @@:
bt eax,5
bt ecx,0 jnc @f
jc @f bts edx,5
;1) ecx - ÷åòíûé @@:
mov byte[edi],dl add edx,esi
jmp .next mov dl,byte[edx] ;dl - 4 áèòíîå çíà÷åíèå ïîëó÷åííîå èç Si
@@:
;2) ecx - íå ÷åòíûé bt ecx,0
shl dl,4 jc @f
or byte[edi],dl ;1) ecx - ÷åòíûé
inc edi mov byte[edi],dl
.next: jmp .next
@@:
shr eax,6 ;2) ecx - íå ÷åòíûé
ror ebx,6 shl dl,4
mov edx,ebx or byte[edi],dl
and edx,0xfc000000 inc edi
or eax,edx .next:
;èëè 6 ðàç: shr ebx,1 rcr eax,1
add esi,64 ;ïåðåõîäèì íà ñëåäóþùóþ òàáëèöó Si shr eax,6
loop .cycle_0 ror ebx,6
popad mov edx,ebx
ret and edx,0xfc000000
endp or eax,edx
;èëè 6 ðàç: shr ebx,1 rcr eax,1
;description: add esi,64 ;ïåðåõîäèì íà ñëåäóþùóþ òàáëèöó Si
; ïðîöåäóðà ôîðìèðîâàíèÿ êëþ÷åé äëÿ øèôðîâàíèÿ loop .cycle_0
;intput: popad
; key - âõîäíîé êëþ÷ 64 áèò ret
; key_b - 16 ïðåîáðàçîâàííûõ êëþ÷åé ïî 48 áèò endp
; ðàçìåð ïàìÿòè key_b äîëæåí áûòü íå ìåíüøå 120 áàéò
align 4 ;description:
proc encryption_key, key:dword, key_b:dword ; ïðîöåäóðà ôîðìèðîâàíèÿ êëþ÷åé äëÿ øèôðîâàíèÿ
pushad ;intput:
mov esi,[key] ; key - âõîäíîé êëþ÷ 64 áèò
mov edi,[key_b] ; key_b - 16 ïðåîáðàçîâàííûõ êëþ÷åé ïî 48 áèò
; ðàçìåð ïàìÿòè key_b äîëæåí áûòü íå ìåíüøå 120 áàéò
;ïåðåñòàâëÿåì âõîäíîé êëþ÷ ïî ìàòðèöå align 4
stdcall fun_convert_bits, esi, edi, oper_b, 56 proc encryption_key, key:dword, key_b:dword
pushad
;â ebx íàõîäèì C0 mov esi,[key]
mov ebx,dword[edi] mov edi,[key_b]
and ebx,0xfffffff
;â edx íàõîäèì D0 ;ïåðåñòàâëÿåì âõîäíîé êëþ÷ ïî ìàòðèöå
mov edx,dword[edi+3] stdcall fun_convert_bits, esi, edi, oper_b, 56
shr edx,4
;â ebx íàõîäèì C0
;íàõîäèì 16 ïîäêëþ÷åé, äëèííîé ïî 56 áèò mov ebx,dword[edi]
;;;mov edi,[key_b] and ebx,0xfffffff
lea esi,[oper_r] ;â edx íàõîäèì D0
.cycle_1: mov edx,dword[edi+3]
mov cl,byte[esi] shr edx,4
cmp cl,0
je .cycle_end ;íàõîäèì 16 ïîäêëþ÷åé, äëèííîé ïî 56 áèò
shl ebx,cl ;;;mov edi,[key_b]
btr ebx,28 lea esi,[oper_r]
jnc @f .cycle_1:
or ebx,1 mov cl,byte[esi]
@@: cmp cl,0
btr ebx,29 je .cycle_end
jnc @f shl ebx,cl
or ebx,2 btr ebx,28
@@: jnc @f
shl edx,cl or ebx,1
btr edx,28 @@:
jnc @f btr ebx,29
or edx,1 jnc @f
@@: or ebx,2
btr edx,29 @@:
jnc @f shl edx,cl
or edx,2 btr edx,28
@@: jnc @f
or edx,1
mov dword[edi+3],0 @@:
mov dword[edi],ebx btr edx,29
shl edx,4 jnc @f
or dword[edi+3],edx or edx,2
add edi,7 @@:
shr edx,4
inc esi mov dword[edi+3],0
mov dword[edi],ebx
jmp .cycle_1 shl edx,4
.cycle_end: or dword[edi+3],edx
add edi,7
;ñæàòèå êëþ÷åé ñ 56 äî 48 áèò shr edx,4
mov edi,[key_b] inc esi
mov esi,edi
add esi,112 ;112 - àäðåñ çà ïðåäåëàìè 16*7 jmp .cycle_1
.cycle_end:
mov ecx,16
cld ;ñæàòèå êëþ÷åé ñ 56 äî 48 áèò
@@: mov edi,[key_b]
stdcall fun_convert_bits, edi, esi, oper_c, 48 mov esi,edi
movsd add esi,112 ;112 - àäðåñ çà ïðåäåëàìè 16*7
movsw
mov byte[edi],0 ;îáðåçàåì 7-é áàéò mov ecx,16
inc edi cld
sub esi,6 @@:
loop @b stdcall fun_convert_bits, edi, esi, oper_c, 48
movsd
popad movsw
ret mov byte[edi],0 ;îáðåçàåì 7-é áàéò
endp inc edi
sub esi,6
align 4 loop @b
oper_ip db 57,49,41,33,25,17,9,1,59,51,43,35,27,19,11,3,\
61,53,45,37,29,21,13, 5,63,55,47,39,31,23,15, 7,\ popad
56,48,40,32,24,16, 8, 0,58,50,42,34,26,18,10, 2,\ ret
60,52,44,36,28,20,12, 4,62,54,46,38,30,22,14, 6 endp
align 4 align 4
oper_ip_inv db 39,7,47,15,55,23,63,31,38,6,46,14,54,22,62,30,\ oper_ip db 57,49,41,33,25,17,9,1,59,51,43,35,27,19,11,3,\
37, 5,45,13,53,21,61,29,36, 4,44,12,52,20,60,28,\ 61,53,45,37,29,21,13, 5,63,55,47,39,31,23,15, 7,\
35, 3,43,11,51,19,59,27,34, 2,42,10,50,18,58,26,\ 56,48,40,32,24,16, 8, 0,58,50,42,34,26,18,10, 2,\
33, 1,41, 9,49,17,57,25,32, 0,40, 8,48,16,56,24 60,52,44,36,28,20,12, 4,62,54,46,38,30,22,14, 6
align 4 align 4
oper_e db 31,0,1,2,3,4,\ oper_ip_inv db 39,7,47,15,55,23,63,31,38,6,46,14,54,22,62,30,\
3, 4, 5, 6, 7, 8,\ 37, 5,45,13,53,21,61,29,36, 4,44,12,52,20,60,28,\
7, 8, 9,10,11,12,\ 35, 3,43,11,51,19,59,27,34, 2,42,10,50,18,58,26,\
11,12,13,14,15,16,\ 33, 1,41, 9,49,17,57,25,32, 0,40, 8,48,16,56,24
15,16,17,18,19,20,\
19,20,21,22,23,24,\ align 4
23,24,25,26,27,28,\ oper_e db 31,0,1,2,3,4,\
27,28,29,30,31, 0 3, 4, 5, 6, 7, 8,\
7, 8, 9,10,11,12,\
align 4 11,12,13,14,15,16,\
oper_b db 56,48,40,32,24,16,8,\ 15,16,17,18,19,20,\
0,57,49,41,33,25,17,\ 19,20,21,22,23,24,\
9, 1,58,50,42,34,26,\ 23,24,25,26,27,28,\
18,10, 2,59,51,43,35,\ 27,28,29,30,31, 0
62,54,46,38,30,22,14,\
6,61,53,45,37,29,21,\ align 4
13, 5,60,52,44,36,28,\ oper_b db 56,48,40,32,24,16,8,\
20,12, 4,27,19,11, 3 0,57,49,41,33,25,17,\
9, 1,58,50,42,34,26,\
oper_r db 1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1,0 18,10, 2,59,51,43,35,\
62,54,46,38,30,22,14,\
align 4 6,61,53,45,37,29,21,\
oper_c db 13,16,10,23,0,4,\ 13, 5,60,52,44,36,28,\
2,27,14, 5,20, 9,\ 20,12, 4,27,19,11, 3
22,18,11, 3,25, 7,\
15, 6,26,19,12, 1,\ oper_r db 1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1,0
40,51,30,36,46,54,\
29,39,50,44,32,47,\ align 4
43,48,38,55,33,52,\ oper_c db 13,16,10,23,0,4,\
45,41,49,35,28,31 2,27,14, 5,20, 9,\
22,18,11, 3,25, 7,\
align 4 15, 6,26,19,12, 1,\
oper_s db 14,4,13,1,2,15,11,8,3,10,6,12,5,9,0,7,\ 40,51,30,36,46,54,\
0,15, 7, 4,14, 2,13,1,10,6,12,11,9,5,3,8,\ 29,39,50,44,32,47,\
4, 1,14, 8,13, 6,2,11,15,12,9,7,3,10,5,0,\ 43,48,38,55,33,52,\
15,12, 8, 2, 4, 9,1,7,5,11,3,14,10,0,6,13,\ 45,41,49,35,28,31
15, 1, 8,14, 6,11,3,4,9,7,2,13,12,0,5,10,\
3,13, 4, 7,15, 2,8,14,12,0,1,10,6,9,11,5,\ align 4
0,14, 7,11,10, 4,13,1,5,8,12,6,9,3,2,15,\ oper_s db 14,4,13,1,2,15,11,8,3,10,6,12,5,9,0,7,\
13, 8,10, 1, 3,15,4,2,11,6,7,12,0,5,14,9,\ 0,15, 7, 4,14, 2,13,1,10,6,12,11,9,5,3,8,\
10, 0, 9,14, 6, 3,15,5,1,13,12,7,11,4,2,8,\ 4, 1,14, 8,13, 6,2,11,15,12,9,7,3,10,5,0,\
13, 7, 0, 9, 3, 4,6,10,2,8,5,14,12,11,15,1,\ 15,12, 8, 2, 4, 9,1,7,5,11,3,14,10,0,6,13,\
13, 6, 4, 9, 8,15,3,0,11,1,2,12,5,10,14,7,\ 15, 1, 8,14, 6,11,3,4,9,7,2,13,12,0,5,10,\
1,10,13, 0, 6, 9,8,7,4,15,14,3,11,5,2,12,\ 3,13, 4, 7,15, 2,8,14,12,0,1,10,6,9,11,5,\
7,13,14, 3, 0, 6,9,10,1,2,8,5,11,12,4,15,\ 0,14, 7,11,10, 4,13,1,5,8,12,6,9,3,2,15,\
13, 8,11, 5, 6,15,0,3,4,7,2,12,1,10,14,9,\ 13, 8,10, 1, 3,15,4,2,11,6,7,12,0,5,14,9,\
10, 6, 9, 0,12,11,7,13,15,1,3,14,5,2,8,4,\ 10, 0, 9,14, 6, 3,15,5,1,13,12,7,11,4,2,8,\
3,15, 0, 6,10, 1,13,8,9,4,5,11,12,7,2,14,\ 13, 7, 0, 9, 3, 4,6,10,2,8,5,14,12,11,15,1,\
2,12, 4, 1, 7,10,11,6,8,5,3,15,13,0,14,9,\ 13, 6, 4, 9, 8,15,3,0,11,1,2,12,5,10,14,7,\
14,11, 2,12, 4, 7,13,1,5,0,15,10,3,9,8,6,\ 1,10,13, 0, 6, 9,8,7,4,15,14,3,11,5,2,12,\
4, 2, 1,11,10,13,7,8,15,9,12,5,6,3,0,14,\ 7,13,14, 3, 0, 6,9,10,1,2,8,5,11,12,4,15,\
11, 8,12, 7, 1,14,2,13,6,15,0,9,10,4,5,3,\ 13, 8,11, 5, 6,15,0,3,4,7,2,12,1,10,14,9,\
12, 1,10,15, 9, 2,6,8,0,13,3,4,14,7,5,11,\ 10, 6, 9, 0,12,11,7,13,15,1,3,14,5,2,8,4,\
10,15, 4, 2, 7,12,9,5,6,1,13,14,0,11,3,8,\ 3,15, 0, 6,10, 1,13,8,9,4,5,11,12,7,2,14,\
9,14,15, 5, 2, 8,12,3,7,0,4,10,1,13,11,6,\ 2,12, 4, 1, 7,10,11,6,8,5,3,15,13,0,14,9,\
4, 3, 2,12, 9, 5,15,10,11,14,1,7,6,0,8,13,\ 14,11, 2,12, 4, 7,13,1,5,0,15,10,3,9,8,6,\
4,11, 2,14,15, 0,8,13,3,12,9,7,5,10,6,1,\ 4, 2, 1,11,10,13,7,8,15,9,12,5,6,3,0,14,\
13, 0,11, 7, 4, 9,1,10,14,3,5,12,2,15,8,6,\ 11, 8,12, 7, 1,14,2,13,6,15,0,9,10,4,5,3,\
1, 4,11,13,12, 3,7,14,10,15,6,8,0,5,9,2,\ 12, 1,10,15, 9, 2,6,8,0,13,3,4,14,7,5,11,\
6,11,13, 8, 1, 4,10,7,9,5,0,15,14,2,3,12,\ 10,15, 4, 2, 7,12,9,5,6,1,13,14,0,11,3,8,\
13, 2, 8, 4, 6,15,11,1,10,9,3,14,5,0,12,7,\ 9,14,15, 5, 2, 8,12,3,7,0,4,10,1,13,11,6,\
1,15,13, 8,10, 3,7,4,12,5,6,11,0,14,9,2,\ 4, 3, 2,12, 9, 5,15,10,11,14,1,7,6,0,8,13,\
7,11, 4, 1, 9,12,14,2,0,6,10,13,15,3,5,8,\ 4,11, 2,14,15, 0,8,13,3,12,9,7,5,10,6,1,\
2, 1,14, 7, 4,10,8,13,15,12,9,0,3,5,6,11 13, 0,11, 7, 4, 9,1,10,14,3,5,12,2,15,8,6,\
1, 4,11,13,12, 3,7,14,10,15,6,8,0,5,9,2,\
align 4 6,11,13, 8, 1, 4,10,7,9,5,0,15,14,2,3,12,\
oper_p db 15,6,19,20,28,11,27,16,\ 13, 2, 8, 4, 6,15,11,1,10,9,3,14,5,0,12,7,\
0,14,22,25, 4,17,30, 9,\ 1,15,13, 8,10, 3,7,4,12,5,6,11,0,14,9,2,\
1, 7,23,13,31,26, 2, 8,\ 7,11, 4, 1, 9,12,14,2,0,6,10,13,15,3,5,8,\
18,12,29, 5,21,10, 3,24 2, 1,14, 7, 4,10,8,13,15,12,9,0,3,5,6,11
align 4
align 16 oper_p db 15,6,19,20,28,11,27,16,\
EXPORTS: 0,14,22,25, 4,17,30, 9,\
dd sz_des_encryption, des_encryption 1, 7,23,13,31,26, 2, 8,\
dd sz_des_decryption, des_decryption 18,12,29, 5,21,10, 3,24
dd 0,0
sz_des_encryption db 'des_encryption',0
sz_des_decryption db 'des_decryption',0 align 16
EXPORTS:
dd sz_des_encryption, des_encryption
dd sz_des_decryption, des_decryption
dd 0,0
sz_des_encryption db 'des_encryption',0
sz_des_decryption db 'des_decryption',0