⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rmd320.asm

📁 ASM 多种hash模块,汇编源码 MD2,4,5 SHA 等多种加密算法 还有其他赠送内容
💻 ASM
📖 第 1 页 / 共 2 页
字号:
.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?
RMD320HashBuf db 64 dup(?)
RMD320Len dd ?
RMD320Index dd ?
RMD320Digest dd 10 dup(?)

.code
RMD320FF 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
RMD320GG 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
RMD320HH 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
RMD320II 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
RMD320JJ 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
RMD320Transform proc
	pushad
	mov edi,offset RMD320Digest
	mov ebp,offset RMD320HashBuf	
	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]
	;==========================================================
	RMD320FF eax, ebx, ecx, edx, esi, dword ptr [ebp+00*4], 11
	RMD320FF esi, eax, ebx, ecx, edx, dword ptr [ebp+01*4], 14
	RMD320FF edx, esi, eax, ebx, ecx, dword ptr [ebp+02*4], 15
	RMD320FF ecx, edx, esi, eax, ebx, dword ptr [ebp+03*4], 12
	RMD320FF ebx, ecx, edx, esi, eax, dword ptr [ebp+04*4], 05
	RMD320FF eax, ebx, ecx, edx, esi, dword ptr [ebp+05*4], 08
	RMD320FF esi, eax, ebx, ecx, edx, dword ptr [ebp+06*4], 07
	RMD320FF edx, esi, eax, ebx, ecx, dword ptr [ebp+07*4], 09
	RMD320FF ecx, edx, esi, eax, ebx, dword ptr [ebp+08*4], 11
	RMD320FF ebx, ecx, edx, esi, eax, dword ptr [ebp+09*4], 13
	RMD320FF eax, ebx, ecx, edx, esi, dword ptr [ebp+10*4], 14
	RMD320FF esi, eax, ebx, ecx, edx, dword ptr [ebp+11*4], 15
	RMD320FF edx, esi, eax, ebx, ecx, dword ptr [ebp+12*4], 06
	RMD320FF ecx, edx, esi, eax, ebx, dword ptr [ebp+13*4], 07
	RMD320FF ebx, ecx, edx, esi, eax, dword ptr [ebp+14*4], 09
	RMD320FF eax, ebx, ecx, edx, esi, dword ptr [ebp+15*4], 08
	;==========================================================
	mov edi,offset RMD320Digest
	pushad; store a..e 1
	mov eax,[edi+5*4];a2
	mov ebx,[edi+6*4];b2
	mov ecx,[edi+7*4];c2
	mov edx,[edi+8*4];d2
	mov esi,[edi+9*4];d2
	;======================================================================
	RMD320JJ eax, ebx, ecx, edx, esi, dword ptr [ebp+05*4], 08, 050a28be6h
	RMD320JJ esi, eax, ebx, ecx, edx, dword ptr [ebp+14*4], 09, 050a28be6h
	RMD320JJ edx, esi, eax, ebx, ecx, dword ptr [ebp+07*4], 09, 050a28be6h
	RMD320JJ ecx, edx, esi, eax, ebx, dword ptr [ebp+00*4], 11, 050a28be6h
	RMD320JJ ebx, ecx, edx, esi, eax, dword ptr [ebp+09*4], 13, 050a28be6h
	RMD320JJ eax, ebx, ecx, edx, esi, dword ptr [ebp+02*4], 15, 050a28be6h
	RMD320JJ esi, eax, ebx, ecx, edx, dword ptr [ebp+11*4], 15, 050a28be6h
	RMD320JJ edx, esi, eax, ebx, ecx, dword ptr [ebp+04*4], 05, 050a28be6h
	RMD320JJ ecx, edx, esi, eax, ebx, dword ptr [ebp+13*4], 07, 050a28be6h
	RMD320JJ ebx, ecx, edx, esi, eax, dword ptr [ebp+06*4], 07, 050a28be6h
	RMD320JJ eax, ebx, ecx, edx, esi, dword ptr [ebp+15*4], 08, 050a28be6h
	RMD320JJ esi, eax, ebx, ecx, edx, dword ptr [ebp+08*4], 11, 050a28be6h
	RMD320JJ edx, esi, eax, ebx, ecx, dword ptr [ebp+01*4], 14, 050a28be6h
	RMD320JJ ecx, edx, esi, eax, ebx, dword ptr [ebp+10*4], 14, 050a28be6h
	RMD320JJ ebx, ecx, edx, esi, eax, dword ptr [ebp+03*4], 12, 050a28be6h
	RMD320JJ eax, ebx, ecx, edx, esi, dword ptr [ebp+12*4], 06, 050a28be6h
	;======================================================================
	mov edi,[esp+pushad_eax]
	mov [esp+pushad_eax],eax
	mov eax,edi
;	xchg eax,[esp+pushad_eax]
	pushad;store a..d 2
	mov eax,[esp+pushad_size+pushad_eax];a1
	mov ebx,[esp+pushad_size+pushad_ebx];b1
	mov ecx,[esp+pushad_size+pushad_ecx];c1
	mov edx,[esp+pushad_size+pushad_edx];d1
	mov esi,[esp+pushad_size+pushad_esi];d1
	;======================================================================
	RMD320GG esi, eax, ebx, ecx, edx, dword ptr [ebp+07*4], 07, 05a827999h
	RMD320GG edx, esi, eax, ebx, ecx, dword ptr [ebp+04*4], 06, 05a827999h
	RMD320GG ecx, edx, esi, eax, ebx, dword ptr [ebp+13*4], 08, 05a827999h
	RMD320GG ebx, ecx, edx, esi, eax, dword ptr [ebp+01*4], 13, 05a827999h
	RMD320GG eax, ebx, ecx, edx, esi, dword ptr [ebp+10*4], 11, 05a827999h
	RMD320GG esi, eax, ebx, ecx, edx, dword ptr [ebp+06*4], 09, 05a827999h
	RMD320GG edx, esi, eax, ebx, ecx, dword ptr [ebp+15*4], 07, 05a827999h
	RMD320GG ecx, edx, esi, eax, ebx, dword ptr [ebp+03*4], 15, 05a827999h
	RMD320GG ebx, ecx, edx, esi, eax, dword ptr [ebp+12*4], 07, 05a827999h
	RMD320GG eax, ebx, ecx, edx, esi, dword ptr [ebp+00*4], 12, 05a827999h
	RMD320GG esi, eax, ebx, ecx, edx, dword ptr [ebp+09*4], 15, 05a827999h
	RMD320GG edx, esi, eax, ebx, ecx, dword ptr [ebp+05*4], 09, 05a827999h
	RMD320GG ecx, edx, esi, eax, ebx, dword ptr [ebp+02*4], 11, 05a827999h
	RMD320GG ebx, ecx, edx, esi, eax, dword ptr [ebp+14*4], 07, 05a827999h
	RMD320GG eax, ebx, ecx, edx, esi, dword ptr [ebp+11*4], 13, 05a827999h
	RMD320GG esi, eax, ebx, ecx, edx, dword ptr [ebp+08*4], 12, 05a827999h
	;======================================================================
	mov [esp+pushad_size+pushad_eax],eax;a1
	mov [esp+pushad_size+pushad_ebx],ebx;b1
	mov [esp+pushad_size+pushad_ecx],ecx;c1
	mov [esp+pushad_size+pushad_edx],edx;d1
	mov [esp+pushad_size+pushad_esi],esi;d1
	mov eax,[esp+pushad_eax];a2
	mov ebx,[esp+pushad_ebx];b2
	mov ecx,[esp+pushad_ecx];c2
	mov edx,[esp+pushad_edx];d2
	mov esi,[esp+pushad_esi];d2
	;======================================================================
	RMD320II esi, eax, ebx, ecx, edx, dword ptr [ebp+06*4], 09, 05c4dd124h
	RMD320II edx, esi, eax, ebx, ecx, dword ptr [ebp+11*4], 13, 05c4dd124h
	RMD320II ecx, edx, esi, eax, ebx, dword ptr [ebp+03*4], 15, 05c4dd124h
	RMD320II ebx, ecx, edx, esi, eax, dword ptr [ebp+07*4], 07, 05c4dd124h
	RMD320II eax, ebx, ecx, edx, esi, dword ptr [ebp+00*4], 12, 05c4dd124h
	RMD320II esi, eax, ebx, ecx, edx, dword ptr [ebp+13*4], 08, 05c4dd124h
	RMD320II edx, esi, eax, ebx, ecx, dword ptr [ebp+05*4], 09, 05c4dd124h
	RMD320II ecx, edx, esi, eax, ebx, dword ptr [ebp+10*4], 11, 05c4dd124h
	RMD320II ebx, ecx, edx, esi, eax, dword ptr [ebp+14*4], 07, 05c4dd124h
	RMD320II eax, ebx, ecx, edx, esi, dword ptr [ebp+15*4], 07, 05c4dd124h
	RMD320II esi, eax, ebx, ecx, edx, dword ptr [ebp+08*4], 12, 05c4dd124h
	RMD320II edx, esi, eax, ebx, ecx, dword ptr [ebp+12*4], 07, 05c4dd124h
	RMD320II ecx, edx, esi, eax, ebx, dword ptr [ebp+04*4], 06, 05c4dd124h
	RMD320II ebx, ecx, edx, esi, eax, dword ptr [ebp+09*4], 15, 05c4dd124h
	RMD320II eax, ebx, ecx, edx, esi, dword ptr [ebp+01*4], 13, 05c4dd124h
	RMD320II esi, eax, ebx, ecx, edx, dword ptr [ebp+02*4], 11, 05c4dd124h
	;======================================================================
	mov edi,[esp+pushad_size+pushad_ebx]
	mov [esp+pushad_size+pushad_ebx],ebx
	mov ebx,edi
;	xchg ebx,[esp+pushad_size+pushad_ebx]
	mov [esp+pushad_eax],eax;a2
	mov [esp+pushad_ebx],ebx;b2
	mov [esp+pushad_ecx],ecx;c2
	mov [esp+pushad_edx],edx;d2
	mov [esp+pushad_esi],esi;d2
	mov eax,[esp+pushad_size+pushad_eax];a1
	mov ebx,[esp+pushad_size+pushad_ebx];b1
	mov ecx,[esp+pushad_size+pushad_ecx];c1
	mov edx,[esp+pushad_size+pushad_edx];d1
	mov esi,[esp+pushad_size+pushad_esi];d1
	;======================================================================
	RMD320HH edx, esi, eax, ebx, ecx, dword ptr [ebp+03*4], 11, 06ed9eba1h
	RMD320HH ecx, edx, esi, eax, ebx, dword ptr [ebp+10*4], 13, 06ed9eba1h
	RMD320HH ebx, ecx, edx, esi, eax, dword ptr [ebp+14*4], 06, 06ed9eba1h
	RMD320HH eax, ebx, ecx, edx, esi, dword ptr [ebp+04*4], 07, 06ed9eba1h
	RMD320HH esi, eax, ebx, ecx, edx, dword ptr [ebp+09*4], 14, 06ed9eba1h
	RMD320HH edx, esi, eax, ebx, ecx, dword ptr [ebp+15*4], 09, 06ed9eba1h
	RMD320HH ecx, edx, esi, eax, ebx, dword ptr [ebp+08*4], 13, 06ed9eba1h
	RMD320HH ebx, ecx, edx, esi, eax, dword ptr [ebp+01*4], 15, 06ed9eba1h
	RMD320HH eax, ebx, ecx, edx, esi, dword ptr [ebp+02*4], 14, 06ed9eba1h
	RMD320HH esi, eax, ebx, ecx, edx, dword ptr [ebp+07*4], 08, 06ed9eba1h
	RMD320HH edx, esi, eax, ebx, ecx, dword ptr [ebp+00*4], 13, 06ed9eba1h
	RMD320HH ecx, edx, esi, eax, ebx, dword ptr [ebp+06*4], 06, 06ed9eba1h
	RMD320HH ebx, ecx, edx, esi, eax, dword ptr [ebp+13*4], 05, 06ed9eba1h
	RMD320HH eax, ebx, ecx, edx, esi, dword ptr [ebp+11*4], 12, 06ed9eba1h
	RMD320HH esi, eax, ebx, ecx, edx, dword ptr [ebp+05*4], 07, 06ed9eba1h
	RMD320HH edx, esi, eax, ebx, ecx, dword ptr [ebp+12*4], 05, 06ed9eba1h
	;======================================================================
	mov [esp+pushad_size+pushad_eax],eax;a1
	mov [esp+pushad_size+pushad_ebx],ebx;b1
	mov [esp+pushad_size+pushad_ecx],ecx;c1
	mov [esp+pushad_size+pushad_edx],edx;d1
	mov [esp+pushad_size+pushad_esi],esi;d1
	mov eax,[esp+pushad_eax];a2
	mov ebx,[esp+pushad_ebx];b2
	mov ecx,[esp+pushad_ecx];c2
	mov edx,[esp+pushad_edx];d2
	mov esi,[esp+pushad_esi];d2
	;======================================================================
	RMD320HH edx, esi, eax, ebx, ecx, dword ptr [ebp+15*4], 09, 06d703ef3h
	RMD320HH ecx, edx, esi, eax, ebx, dword ptr [ebp+05*4], 07, 06d703ef3h
	RMD320HH ebx, ecx, edx, esi, eax, dword ptr [ebp+01*4], 15, 06d703ef3h
	RMD320HH eax, ebx, ecx, edx, esi, dword ptr [ebp+03*4], 11, 06d703ef3h
	RMD320HH esi, eax, ebx, ecx, edx, dword ptr [ebp+07*4], 08, 06d703ef3h

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -