📄 rmd160.asm
字号:
.686
.model flat,stdcall
option casemap:none
.const
pushad_size equ 8*4
pushad_eax equ 7*4
pushad_ecx equ 6*4
pushad_edx equ 5*4
pushad_ebx equ 4*4
pushad_esp equ 3*4
pushad_ebp equ 2*4
pushad_esi equ 1*4
pushad_edi equ 0*4
.data?
RMD160HashBuf db 64 dup(?)
RMD160Len dd ?
RMD160Index dd ?
RMD160Digest dd 5 dup(?)
.code
RMD160FF macro dwA, dwB, dwC, dwD, dwE, locX, rolS
mov edi,dwB
xor edi,dwC
xor edi,dwD
add dwA,locX
add dwA,edi
rol dwA,rolS
add dwA,dwE
rol dwC,10
endm
RMD160GG macro dwA, dwB, dwC, dwD, dwE, locX, rolS, constAC
mov edi,dwC
xor edi,dwD
and edi,dwB
xor edi,dwD
add dwA,[locX]
lea dwA,[dwA+edi+constAC]
rol dwA,rolS
add dwA,dwE
rol dwC,10
ENDM
RMD160HH macro dwA, dwB, dwC, dwD, dwE, locX, rolS, constAC
mov edi,dwC
xor edi,-1
or edi,dwB
xor edi,dwD
add dwA,[locX]
lea dwA,[dwA+edi+constAC]
rol dwA,rolS
add dwA,dwE
rol dwC,10
endm
RMD160II macro dwA, dwB, dwC, dwD, dwE, locX, rolS, constAC
mov edi,dwC
xor edi,dwB
and edi,dwD
xor edi,dwC
add dwA,[locX]
lea dwA,[dwA+edi+constAC]
rol dwA,rolS
add dwA,dwE
rol dwC,10
endm
RMD160JJ macro dwA, dwB, dwC, dwD, dwE, locX, rolS, constAC
mov edi,dwD
xor edi,-1
or edi,dwC
xor edi,dwB
add dwA,[locX]
lea dwA,[dwA+edi+constAC]
rol dwA,rolS
add dwA,dwE
rol dwC,10
ENDM
align dword
RMD160Transform proc
pushad
mov edi,offset RMD160Digest
mov ebp,offset RMD160HashBuf
mov eax,[edi+0*4]
mov ebx,[edi+1*4]
mov ecx,[edi+2*4]
mov edx,[edi+3*4]
mov esi,[edi+4*4]
;==========================================================
RMD160FF eax, ebx, ecx, edx, esi, dword ptr [ebp+00*4], 11
RMD160FF esi, eax, ebx, ecx, edx, dword ptr [ebp+01*4], 14
RMD160FF edx, esi, eax, ebx, ecx, dword ptr [ebp+02*4], 15
RMD160FF ecx, edx, esi, eax, ebx, dword ptr [ebp+03*4], 12
RMD160FF ebx, ecx, edx, esi, eax, dword ptr [ebp+04*4], 05
RMD160FF eax, ebx, ecx, edx, esi, dword ptr [ebp+05*4], 08
RMD160FF esi, eax, ebx, ecx, edx, dword ptr [ebp+06*4], 07
RMD160FF edx, esi, eax, ebx, ecx, dword ptr [ebp+07*4], 09
RMD160FF ecx, edx, esi, eax, ebx, dword ptr [ebp+08*4], 11
RMD160FF ebx, ecx, edx, esi, eax, dword ptr [ebp+09*4], 13
RMD160FF eax, ebx, ecx, edx, esi, dword ptr [ebp+10*4], 14
RMD160FF esi, eax, ebx, ecx, edx, dword ptr [ebp+11*4], 15
RMD160FF edx, esi, eax, ebx, ecx, dword ptr [ebp+12*4], 06
RMD160FF ecx, edx, esi, eax, ebx, dword ptr [ebp+13*4], 07
RMD160FF ebx, ecx, edx, esi, eax, dword ptr [ebp+14*4], 09
RMD160FF eax, ebx, ecx, edx, esi, dword ptr [ebp+15*4], 08
;======================================================================
RMD160GG esi, eax, ebx, ecx, edx, dword ptr [ebp+07*4], 07, 05a827999h
RMD160GG edx, esi, eax, ebx, ecx, dword ptr [ebp+04*4], 06, 05a827999h
RMD160GG ecx, edx, esi, eax, ebx, dword ptr [ebp+13*4], 08, 05a827999h
RMD160GG ebx, ecx, edx, esi, eax, dword ptr [ebp+01*4], 13, 05a827999h
RMD160GG eax, ebx, ecx, edx, esi, dword ptr [ebp+10*4], 11, 05a827999h
RMD160GG esi, eax, ebx, ecx, edx, dword ptr [ebp+06*4], 09, 05a827999h
RMD160GG edx, esi, eax, ebx, ecx, dword ptr [ebp+15*4], 07, 05a827999h
RMD160GG ecx, edx, esi, eax, ebx, dword ptr [ebp+03*4], 15, 05a827999h
RMD160GG ebx, ecx, edx, esi, eax, dword ptr [ebp+12*4], 07, 05a827999h
RMD160GG eax, ebx, ecx, edx, esi, dword ptr [ebp+00*4], 12, 05a827999h
RMD160GG esi, eax, ebx, ecx, edx, dword ptr [ebp+09*4], 15, 05a827999h
RMD160GG edx, esi, eax, ebx, ecx, dword ptr [ebp+05*4], 09, 05a827999h
RMD160GG ecx, edx, esi, eax, ebx, dword ptr [ebp+02*4], 11, 05a827999h
RMD160GG ebx, ecx, edx, esi, eax, dword ptr [ebp+14*4], 07, 05a827999h
RMD160GG eax, ebx, ecx, edx, esi, dword ptr [ebp+11*4], 13, 05a827999h
RMD160GG esi, eax, ebx, ecx, edx, dword ptr [ebp+08*4], 12, 05a827999h
;======================================================================
RMD160HH edx, esi, eax, ebx, ecx, dword ptr [ebp+03*4], 11, 06ed9eba1h
RMD160HH ecx, edx, esi, eax, ebx, dword ptr [ebp+10*4], 13, 06ed9eba1h
RMD160HH ebx, ecx, edx, esi, eax, dword ptr [ebp+14*4], 06, 06ed9eba1h
RMD160HH eax, ebx, ecx, edx, esi, dword ptr [ebp+04*4], 07, 06ed9eba1h
RMD160HH esi, eax, ebx, ecx, edx, dword ptr [ebp+09*4], 14, 06ed9eba1h
RMD160HH edx, esi, eax, ebx, ecx, dword ptr [ebp+15*4], 09, 06ed9eba1h
RMD160HH ecx, edx, esi, eax, ebx, dword ptr [ebp+08*4], 13, 06ed9eba1h
RMD160HH ebx, ecx, edx, esi, eax, dword ptr [ebp+01*4], 15, 06ed9eba1h
RMD160HH eax, ebx, ecx, edx, esi, dword ptr [ebp+02*4], 14, 06ed9eba1h
RMD160HH esi, eax, ebx, ecx, edx, dword ptr [ebp+07*4], 08, 06ed9eba1h
RMD160HH edx, esi, eax, ebx, ecx, dword ptr [ebp+00*4], 13, 06ed9eba1h
RMD160HH ecx, edx, esi, eax, ebx, dword ptr [ebp+06*4], 06, 06ed9eba1h
RMD160HH ebx, ecx, edx, esi, eax, dword ptr [ebp+13*4], 05, 06ed9eba1h
RMD160HH eax, ebx, ecx, edx, esi, dword ptr [ebp+11*4], 12, 06ed9eba1h
RMD160HH esi, eax, ebx, ecx, edx, dword ptr [ebp+05*4], 07, 06ed9eba1h
RMD160HH edx, esi, eax, ebx, ecx, dword ptr [ebp+12*4], 05, 06ed9eba1h
;======================================================================
RMD160II ecx, edx, esi, eax, ebx, dword ptr [ebp+01*4], 11, 08f1bbcdch
RMD160II ebx, ecx, edx, esi, eax, dword ptr [ebp+09*4], 12, 08f1bbcdch
RMD160II eax, ebx, ecx, edx, esi, dword ptr [ebp+11*4], 14, 08f1bbcdch
RMD160II esi, eax, ebx, ecx, edx, dword ptr [ebp+10*4], 15, 08f1bbcdch
RMD160II edx, esi, eax, ebx, ecx, dword ptr [ebp+00*4], 14, 08f1bbcdch
RMD160II ecx, edx, esi, eax, ebx, dword ptr [ebp+08*4], 15, 08f1bbcdch
RMD160II ebx, ecx, edx, esi, eax, dword ptr [ebp+12*4], 09, 08f1bbcdch
RMD160II eax, ebx, ecx, edx, esi, dword ptr [ebp+04*4], 08, 08f1bbcdch
RMD160II esi, eax, ebx, ecx, edx, dword ptr [ebp+13*4], 09, 08f1bbcdch
RMD160II edx, esi, eax, ebx, ecx, dword ptr [ebp+03*4], 14, 08f1bbcdch
RMD160II ecx, edx, esi, eax, ebx, dword ptr [ebp+07*4], 05, 08f1bbcdch
RMD160II ebx, ecx, edx, esi, eax, dword ptr [ebp+15*4], 06, 08f1bbcdch
RMD160II eax, ebx, ecx, edx, esi, dword ptr [ebp+14*4], 08, 08f1bbcdch
RMD160II esi, eax, ebx, ecx, edx, dword ptr [ebp+05*4], 06, 08f1bbcdch
RMD160II edx, esi, eax, ebx, ecx, dword ptr [ebp+06*4], 05, 08f1bbcdch
RMD160II ecx, edx, esi, eax, ebx, dword ptr [ebp+02*4], 12, 08f1bbcdch
;======================================================================
RMD160JJ ebx, ecx, edx, esi, eax, dword ptr [ebp+04*4], 09, 0a953fd4eh
RMD160JJ eax, ebx, ecx, edx, esi, dword ptr [ebp+00*4], 15, 0a953fd4eh
RMD160JJ esi, eax, ebx, ecx, edx, dword ptr [ebp+05*4], 05, 0a953fd4eh
RMD160JJ edx, esi, eax, ebx, ecx, dword ptr [ebp+09*4], 11, 0a953fd4eh
RMD160JJ ecx, edx, esi, eax, ebx, dword ptr [ebp+07*4], 06, 0a953fd4eh
RMD160JJ ebx, ecx, edx, esi, eax, dword ptr [ebp+12*4], 08, 0a953fd4eh
RMD160JJ eax, ebx, ecx, edx, esi, dword ptr [ebp+02*4], 13, 0a953fd4eh
RMD160JJ esi, eax, ebx, ecx, edx, dword ptr [ebp+10*4], 12, 0a953fd4eh
RMD160JJ edx, esi, eax, ebx, ecx, dword ptr [ebp+14*4], 05, 0a953fd4eh
RMD160JJ ecx, edx, esi, eax, ebx, dword ptr [ebp+01*4], 12, 0a953fd4eh
RMD160JJ ebx, ecx, edx, esi, eax, dword ptr [ebp+03*4], 13, 0a953fd4eh
RMD160JJ eax, ebx, ecx, edx, esi, dword ptr [ebp+08*4], 14, 0a953fd4eh
RMD160JJ esi, eax, ebx, ecx, edx, dword ptr [ebp+11*4], 11, 0a953fd4eh
RMD160JJ edx, esi, eax, ebx, ecx, dword ptr [ebp+06*4], 08, 0a953fd4eh
RMD160JJ ecx, edx, esi, eax, ebx, dword ptr [ebp+15*4], 05, 0a953fd4eh
RMD160JJ ebx, ecx, edx, esi, eax, dword ptr [ebp+13*4], 06, 0a953fd4eh
;======================================================================
mov edi,offset RMD160Digest
pushad; parallel
mov eax,[edi+0*4]
mov ebx,[edi+1*4]
mov ecx,[edi+2*4]
mov edx,[edi+3*4]
mov esi,[edi+4*4]
;======================================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -