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

📄 haval.asm

📁 ASM 多种hash模块,汇编源码 MD2,4,5 SHA 等多种加密算法 还有其他赠送内容
💻 ASM
📖 第 1 页 / 共 3 页
字号:
.686
.model flat,stdcall
option casemap:none

.data
HavalSIZE dd 256
HavalPASS dd 5
HavalVERSION equ 1
;HavalOLD equ 1

.data?
HavalHashBuf db 128 dup(?)
HavalLen dd ?
HavalIndex dd ?
HavalDigest dd 8 dup(?)


.code

F_x macro xX,wW,cC
	ror eax,7
	mov ecx,xX
	ror ecx,11
	add eax,wW
	ifb <cC>
	add eax,ecx
	else
	lea eax,[eax+ecx+cC]
	endif
	mov xX,eax
endm
F_1 MACRO _x6, _x5, _x4, _x3, _x2, _x1, _x0
	mov eax,_x0
	mov ecx,_x2
	mov edx,_x3
	xor eax,_x4;x0 ^ x4
	and ecx,_x5;x2 & x5
	and eax,_x1;x1 & (x0^x4)
	and edx,_x6;x3 & x6
	xor eax,ecx
	xor eax,edx
	xor eax,_x0
ENDM
F_2 MACRO _x6, _x5, _x4, _x3, _x2, _x1, _x0
	mov eax,_x3
	mov ebx,_x1
	xor eax,-1
	mov edx,_x5
	mov ecx,_x4
	and eax,ebx
	and ecx,edx
	xor eax,_x6
	xor eax,ecx
	xor eax,_x0;(x1) & ~(x3) ^ (x4) & (x5) ^ (x6) ^ (x0)
	and eax,_x2
	xor ebx,edx
	and ebx,_x4
	and edx,_x3
	xor edx,ebx
	xor eax,_x0
	xor eax,edx
eNDM
F_3 MACRO _x6, _x5, _x4, _x3, _x2, _x1, _x0
	mov eax,_x2
	mov ecx,_x1
	mov edx,_x0
	and eax,ecx
	xor eax,_x6
	mov ebx,_x5
	xor eax, edx;(x1) & (x2) ^ (x6) ^ (x0)
	and eax,_x3
	and ecx,_x4
	and ebx,_x2
	xor eax,ecx
	xor eax,edx
	xor eax,ebx
eNDM
F_4 MACRO _x6, _x5, _x4, _x3, _x2, _x1, _x0
	mov ecx,_x5
	mov edx,_x6
	mov eax,_x2
	mov ebx,edx
	xor ebx,-1
	and ebx,_x3
	xor eax,-1
	and eax,ecx
	xor eax,ebx
	xor eax,edx;x6
	xor eax,_x1
	xor eax,_x0;(x5) & ~(x2) ^ (x3) & ~(x6) ^ (x1) ^ (x6) ^ (x0)
	and eax,_x4
	mov ecx,_x2
	and ecx,_x1
	xor ecx,edx
	xor ecx,_x5;(x1) & (x2) ^ (x5) ^ (x6)
	and ecx,_x3
	and edx,_x2
	xor edx,_x0
	xor eax,ecx
	xor eax,edx
eNDM
F_5 MACRO _x6, _x5, _x4, _x3, _x2, _x1, _x0
	mov eax,_x1
	mov ecx,_x2
	mov edx,_x3
	and eax,ecx
	mov ebx,_x5
	and eax,edx
	xor eax,-1
	xor eax,ebx
	and eax,_x0
	and ecx,ebx
	xor eax,ecx
	mov ebx,_x1
	mov edx,_x3
	and ebx,_x4
	and edx,_x6
	xor eax,ebx
	xor eax,edx
eNDM

HavalPASS1_T3 MACRO x7, x6, x5, x4, x3, x2, x1, x0, w
	F_1 x1, x0, x3, x5, x6, x2, x4
	F_x x7, w
ENDM
HavalPASS1_T4 MACRO x7, x6, x5, x4, x3, x2, x1, x0, w
	F_1 x2, x6, x1, x4, x5, x3, x0
	F_x x7, w
ENDM
HavalPASS1_T5 MACRO x7, x6, x5, x4, x3, x2, x1, x0, w
	F_1 x3, x4, x1, x0, x5, x2, x6
	F_x x7, w
ENDM

HavalPASS2_T3 MACRO x7, x6, x5, x4, x3, x2, x1, x0, w, _c
	F_2 x4, x2, x1, x0, x5, x3, x6
	F_x x7, w, _c
eNDM
HavalPASS2_T4 MACRO x7, x6, x5, x4, x3, x2, x1, x0, w, _c
	F_2 x3, x5, x2, x0, x1, x6, x4
	F_x x7, w, _c
eNDM
HavalPASS2_T5 MACRO x7, x6, x5, x4, x3, x2, x1, x0, w, _c
	F_2 x6, x2, x1, x0, x3, x4, x5
	F_x x7, w, _c
eNDM


HavalPASS3_T3 MACRO x7, x6, x5, x4, x3, x2, x1, x0, w, _c
	F_3 x6, x1, x2, x3, x4, x5, x0
	F_x x7, w, _c
eNDM
HavalPASS3_T4 MACRO x7, x6, x5, x4, x3, x2, x1, x0, w, _c
	F_3 x1, x4, x3, x6, x0, x2, x5
	F_x x7, w, _c
eNDM
HavalPASS3_T5 MACRO x7, x6, x5, x4, x3, x2, x1, x0, w, _c
	F_3 x2, x6, x0, x4, x3, x1, x5
	F_x x7, w, _c
eNDM

HavalPASS4_T4 MACRO x7, x6, x5, x4, x3, x2, x1, x0, w, _c
	F_4 x6, x4, x0, x5, x2, x1, x3
	F_x x7, w, _c
eNDM
HavalPASS4_T5 MACRO x7, x6, x5, x4, x3, x2, x1, x0, w, _c
	F_4 x1, x5, x3, x2, x0, x4, x6
	F_x x7, w, _c
eNDM

HavalPASS5_T5 MACRO x7, x6, x5, x4, x3, x2, x1, x0, w, _c
	F_5 x2, x5, x0, x6, x4, x3, x1
	F_x x7, w, _c
eNDM

HavalBURN macro
	xor eax,eax
	mov HavalIndex,eax
	mov edi,Offset HavalHashBuf
	mov ecx,128/4
	rep stosd
endm

align 4
HavalTransform3 proc
LOCAL t7, t6, t5, t4, t3, t2, t1, t0
	pushad
	mov esi,offset HavalDigest
	mov edi,offset HavalHashBuf
	mov	eax,[esi+0*4]
	mov	ebx,[esi+1*4]
	mov	ecx,[esi+2*4]
	mov	edx,[esi+3*4]
	mov	t0,eax
	mov	t1,ebx
	mov	t2,ecx
	mov	t3,edx
	mov	eax,[esi+4*4]
	mov	ebx,[esi+5*4]
	mov	ecx,[esi+6*4]
	mov	edx,[esi+7*4]
	mov	t4,eax
	mov	t5,ebx
	mov	t6,ecx
	mov	t7,edx
	; 1
	HavalPASS1_T3 t7, t6, t5, t4, t3, t2, t1, t0, [edi+4*00]
	HavalPASS1_T3 t6, t5, t4, t3, t2, t1, t0, t7, [edi+4*01]
	HavalPASS1_T3 t5, t4, t3, t2, t1, t0, t7, t6, [edi+4*02]
	HavalPASS1_T3 t4, t3, t2, t1, t0, t7, t6, t5, [edi+4*03]
	HavalPASS1_T3 t3, t2, t1, t0, t7, t6, t5, t4, [edi+4*04]
	HavalPASS1_T3 t2, t1, t0, t7, t6, t5, t4, t3, [edi+4*05]
	HavalPASS1_T3 t1, t0, t7, t6, t5, t4, t3, t2, [edi+4*06]
	HavalPASS1_T3 t0, t7, t6, t5, t4, t3, t2, t1, [edi+4*07]
	HavalPASS1_T3 t7, t6, t5, t4, t3, t2, t1, t0, [edi+4*08]
	HavalPASS1_T3 t6, t5, t4, t3, t2, t1, t0, t7, [edi+4*09]
	HavalPASS1_T3 t5, t4, t3, t2, t1, t0, t7, t6, [edi+4*10]
	HavalPASS1_T3 t4, t3, t2, t1, t0, t7, t6, t5, [edi+4*11]
	HavalPASS1_T3 t3, t2, t1, t0, t7, t6, t5, t4, [edi+4*12]
	HavalPASS1_T3 t2, t1, t0, t7, t6, t5, t4, t3, [edi+4*13]
	HavalPASS1_T3 t1, t0, t7, t6, t5, t4, t3, t2, [edi+4*14]
	HavalPASS1_T3 t0, t7, t6, t5, t4, t3, t2, t1, [edi+4*15]
	HavalPASS1_T3 t7, t6, t5, t4, t3, t2, t1, t0, [edi+4*16]
	HavalPASS1_T3 t6, t5, t4, t3, t2, t1, t0, t7, [edi+4*17]
	HavalPASS1_T3 t5, t4, t3, t2, t1, t0, t7, t6, [edi+4*18]
	HavalPASS1_T3 t4, t3, t2, t1, t0, t7, t6, t5, [edi+4*19]
	HavalPASS1_T3 t3, t2, t1, t0, t7, t6, t5, t4, [edi+4*20]
	HavalPASS1_T3 t2, t1, t0, t7, t6, t5, t4, t3, [edi+4*21]
	HavalPASS1_T3 t1, t0, t7, t6, t5, t4, t3, t2, [edi+4*22]
	HavalPASS1_T3 t0, t7, t6, t5, t4, t3, t2, t1, [edi+4*23]
	HavalPASS1_T3 t7, t6, t5, t4, t3, t2, t1, t0, [edi+4*24]
	HavalPASS1_T3 t6, t5, t4, t3, t2, t1, t0, t7, [edi+4*25]
	HavalPASS1_T3 t5, t4, t3, t2, t1, t0, t7, t6, [edi+4*26]
	HavalPASS1_T3 t4, t3, t2, t1, t0, t7, t6, t5, [edi+4*27]
	HavalPASS1_T3 t3, t2, t1, t0, t7, t6, t5, t4, [edi+4*28]
	HavalPASS1_T3 t2, t1, t0, t7, t6, t5, t4, t3, [edi+4*29]
	HavalPASS1_T3 t1, t0, t7, t6, t5, t4, t3, t2, [edi+4*30]
	HavalPASS1_T3 t0, t7, t6, t5, t4, t3, t2, t1, [edi+4*31]
	; 2 
	HavalPASS2_T3 t7, t6, t5, t4, t3, t2, t1, t0, [edi+4*05], 0452821E6h
	HavalPASS2_T3 t6, t5, t4, t3, t2, t1, t0, t7, [edi+4*14], 038D01377h
	HavalPASS2_T3 t5, t4, t3, t2, t1, t0, t7, t6, [edi+4*26], 0BE5466CFh
	HavalPASS2_T3 t4, t3, t2, t1, t0, t7, t6, t5, [edi+4*18], 034E90C6Ch
	HavalPASS2_T3 t3, t2, t1, t0, t7, t6, t5, t4, [edi+4*11], 0C0AC29B7h
	HavalPASS2_T3 t2, t1, t0, t7, t6, t5, t4, t3, [edi+4*28], 0C97C50DDh
	HavalPASS2_T3 t1, t0, t7, t6, t5, t4, t3, t2, [edi+4*07], 03F84D5B5h
	HavalPASS2_T3 t0, t7, t6, t5, t4, t3, t2, t1, [edi+4*16], 0B5470917h
	HavalPASS2_T3 t7, t6, t5, t4, t3, t2, t1, t0, [edi+4*00], 09216D5D9h
	HavalPASS2_T3 t6, t5, t4, t3, t2, t1, t0, t7, [edi+4*23], 08979FB1Bh
	HavalPASS2_T3 t5, t4, t3, t2, t1, t0, t7, t6, [edi+4*20], 0D1310BA6h
	HavalPASS2_T3 t4, t3, t2, t1, t0, t7, t6, t5, [edi+4*22], 098DFB5ACh
	HavalPASS2_T3 t3, t2, t1, t0, t7, t6, t5, t4, [edi+4*01], 02FFD72DBh
	HavalPASS2_T3 t2, t1, t0, t7, t6, t5, t4, t3, [edi+4*10], 0D01ADFB7h
	HavalPASS2_T3 t1, t0, t7, t6, t5, t4, t3, t2, [edi+4*04], 0B8E1AFEDh
	HavalPASS2_T3 t0, t7, t6, t5, t4, t3, t2, t1, [edi+4*08], 06A267E96h
	HavalPASS2_T3 t7, t6, t5, t4, t3, t2, t1, t0, [edi+4*30], 0BA7C9045h
	HavalPASS2_T3 t6, t5, t4, t3, t2, t1, t0, t7, [edi+4*03], 0F12C7F99h
	HavalPASS2_T3 t5, t4, t3, t2, t1, t0, t7, t6, [edi+4*21], 024A19947h
	HavalPASS2_T3 t4, t3, t2, t1, t0, t7, t6, t5, [edi+4*09], 0B3916CF7h
	HavalPASS2_T3 t3, t2, t1, t0, t7, t6, t5, t4, [edi+4*17], 00801F2E2h
	HavalPASS2_T3 t2, t1, t0, t7, t6, t5, t4, t3, [edi+4*24], 0858EFC16h
	HavalPASS2_T3 t1, t0, t7, t6, t5, t4, t3, t2, [edi+4*29], 0636920D8h
	HavalPASS2_T3 t0, t7, t6, t5, t4, t3, t2, t1, [edi+4*06], 071574E69h
	HavalPASS2_T3 t7, t6, t5, t4, t3, t2, t1, t0, [edi+4*19], 0A458FEA3h
	HavalPASS2_T3 t6, t5, t4, t3, t2, t1, t0, t7, [edi+4*12], 0F4933D7Eh
	HavalPASS2_T3 t5, t4, t3, t2, t1, t0, t7, t6, [edi+4*15], 00D95748Fh
	HavalPASS2_T3 t4, t3, t2, t1, t0, t7, t6, t5, [edi+4*13], 0728EB658h
	HavalPASS2_T3 t3, t2, t1, t0, t7, t6, t5, t4, [edi+4*02], 0718BCD58h
	HavalPASS2_T3 t2, t1, t0, t7, t6, t5, t4, t3, [edi+4*25], 082154AEEh
	HavalPASS2_T3 t1, t0, t7, t6, t5, t4, t3, t2, [edi+4*31], 07B54A41Dh
	HavalPASS2_T3 t0, t7, t6, t5, t4, t3, t2, t1, [edi+4*27], 0C25A59B5h
	; 3
	HavalPASS3_T3 t7, t6, t5, t4, t3, t2, t1, t0, [edi+4*19], 09C30D539h
	HavalPASS3_T3 t6, t5, t4, t3, t2, t1, t0, t7, [edi+4*09], 02AF26013h
	HavalPASS3_T3 t5, t4, t3, t2, t1, t0, t7, t6, [edi+4*04], 0C5D1B023h
	HavalPASS3_T3 t4, t3, t2, t1, t0, t7, t6, t5, [edi+4*20], 0286085F0h
	HavalPASS3_T3 t3, t2, t1, t0, t7, t6, t5, t4, [edi+4*28], 0CA417918h
	HavalPASS3_T3 t2, t1, t0, t7, t6, t5, t4, t3, [edi+4*17], 0B8DB38EFh
	HavalPASS3_T3 t1, t0, t7, t6, t5, t4, t3, t2, [edi+4*08], 08E79DCB0h
	HavalPASS3_T3 t0, t7, t6, t5, t4, t3, t2, t1, [edi+4*22], 0603A180Eh
	HavalPASS3_T3 t7, t6, t5, t4, t3, t2, t1, t0, [edi+4*29], 06C9E0E8Bh
	HavalPASS3_T3 t6, t5, t4, t3, t2, t1, t0, t7, [edi+4*14], 0B01E8A3Eh
	HavalPASS3_T3 t5, t4, t3, t2, t1, t0, t7, t6, [edi+4*25], 0D71577C1h
	HavalPASS3_T3 t4, t3, t2, t1, t0, t7, t6, t5, [edi+4*12], 0BD314B27h
	HavalPASS3_T3 t3, t2, t1, t0, t7, t6, t5, t4, [edi+4*24], 078AF2FDAh
	HavalPASS3_T3 t2, t1, t0, t7, t6, t5, t4, t3, [edi+4*30], 055605C60h
	HavalPASS3_T3 t1, t0, t7, t6, t5, t4, t3, t2, [edi+4*16], 0E65525F3h
	HavalPASS3_T3 t0, t7, t6, t5, t4, t3, t2, t1, [edi+4*26], 0AA55AB94h
	HavalPASS3_T3 t7, t6, t5, t4, t3, t2, t1, t0, [edi+4*31], 057489862h
	HavalPASS3_T3 t6, t5, t4, t3, t2, t1, t0, t7, [edi+4*15], 063E81440h
	HavalPASS3_T3 t5, t4, t3, t2, t1, t0, t7, t6, [edi+4*07], 055CA396Ah
	HavalPASS3_T3 t4, t3, t2, t1, t0, t7, t6, t5, [edi+4*03], 02AAB10B6h
	HavalPASS3_T3 t3, t2, t1, t0, t7, t6, t5, t4, [edi+4*01], 0B4CC5C34h
	HavalPASS3_T3 t2, t1, t0, t7, t6, t5, t4, t3, [edi+4*00], 01141E8CEh
	HavalPASS3_T3 t1, t0, t7, t6, t5, t4, t3, t2, [edi+4*18], 0A15486AFh
	HavalPASS3_T3 t0, t7, t6, t5, t4, t3, t2, t1, [edi+4*27], 07C72E993h
	HavalPASS3_T3 t7, t6, t5, t4, t3, t2, t1, t0, [edi+4*13], 0B3EE1411h
	HavalPASS3_T3 t6, t5, t4, t3, t2, t1, t0, t7, [edi+4*06], 0636FBC2Ah
	HavalPASS3_T3 t5, t4, t3, t2, t1, t0, t7, t6, [edi+4*21], 02BA9C55Dh
	HavalPASS3_T3 t4, t3, t2, t1, t0, t7, t6, t5, [edi+4*10], 0741831F6h
	HavalPASS3_T3 t3, t2, t1, t0, t7, t6, t5, t4, [edi+4*23], 0CE5C3E16h
	HavalPASS3_T3 t2, t1, t0, t7, t6, t5, t4, t3, [edi+4*11], 09B87931Eh
	HavalPASS3_T3 t1, t0, t7, t6, t5, t4, t3, t2, [edi+4*05], 0AFD6BA33h
	HavalPASS3_T3 t0, t7, t6, t5, t4, t3, t2, t1, [edi+4*02], 06C24CF5Ch
	; 4
	mov	eax,t0
	mov	ebx,t1
	mov	ecx,t2
	mov	edx,t3
	add	[esi+0*4],eax
	add	[esi+1*4],ebx
	add	[esi+2*4],ecx
	add	[esi+3*4],edx
	mov	eax,t4
	mov	ebx,t5
	mov	ecx,t6
	mov	edx,t7
	add	[esi+4*4],eax
	add	[esi+5*4],ebx
	add	[esi+6*4],ecx
	add	[esi+7*4],edx
	popad
	ret
HavalTransform3 endp

align 4
HavalTransform4 proc
LOCAL t7, t6, t5, t4, t3, t2, t1, t0

⌨️ 快捷键说明

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