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

📄 tiger.asm

📁 ASM 多种hash模块,汇编源码 MD2,4,5 SHA 等多种加密算法 还有其他赠送内容
💻 ASM
📖 第 1 页 / 共 2 页
字号:
	mov edx,x2.u64.Hi
	add eax,ebx
	adc edx,ecx
	mov x2.u64.Lo,eax
	mov x2.u64.Hi,edx
	xor ebx,-1
	xor ecx,-1
	shld ecx,ebx,19
	shl ebx,19
	mov esi,x3.u64.Lo
	mov edi,x3.u64.Hi
	xor eax,ebx
	xor edx,ecx
	sub esi,eax
	sbb edi,edx
	mov x3.u64.Lo,esi
	mov x3.u64.Hi,edi
	mov eax,x4.u64.Lo
	mov edx,x4.u64.Hi
	xor eax,esi
	xor edx,edi
	mov x4.u64.Lo,eax
	mov x4.u64.Hi,edx
	mov ebx,x5.u64.Lo
	mov ecx,x5.u64.Hi
	add ebx,eax
	adc ecx,edx
	mov x5.u64.Lo,ebx
	mov x5.u64.Hi,ecx
	xor eax,-1
	xor edx,-1
	shrd eax,edx,23
	shr edx,23
	xor eax,ebx
	xor edx,ecx
	mov esi,x6.u64.Lo
	mov edi,x6.u64.Hi
	sub esi,eax
	sbb edi,edx
	mov x6.u64.Lo,esi
	mov x6.u64.Hi,edi
	mov eax,x7.u64.Lo
	mov edx,x7.u64.Hi
	xor eax,esi
	xor edx,edi
	mov x7.u64.Lo,eax
	mov x7.u64.Hi,edx
	mov ebx,x0.u64.Lo
	mov ecx,x0.u64.Hi
	add ebx,eax
	adc ecx,edx
	mov x0.u64.Lo,ebx
	mov x0.u64.Hi,ecx
	xor eax,-1
	xor edx,-1
	shld edx,eax,19
	shl eax,19
	xor eax,ebx
	xor edx,ecx
	mov esi,x1.u64.Lo
	mov edi,x1.u64.Hi
	sub esi,eax
	sbb edi,edx
	mov x1.u64.Lo,esi
	mov x1.u64.Hi,edi
	mov eax,x2.u64.Lo
	mov edx,x2.u64.Hi
	xor eax,esi
	xor edx,edi
	mov x2.u64.Lo,eax
	mov x2.u64.Hi,edx
	mov ebx,x3.u64.Lo
	mov ecx,x3.u64.Hi
	add ebx,eax
	adc ecx,edx
	mov x3.u64.Lo,ebx
	mov x3.u64.Hi,ecx
	xor eax,-1
	xor edx,-1
	shrd eax,edx,23
	shr edx,23
	xor eax,ebx
	xor edx,ecx
	mov esi,x4.u64.Lo
	mov edi,x4.u64.Hi
	sub esi,eax
	sbb edi,edx
	mov x4.u64.Lo,esi
	mov x4.u64.Hi,edi
	mov eax,x5.u64.Lo
	mov edx,x5.u64.Hi
	xor eax,esi
	xor edx,edi
	mov x5.u64.Lo,eax
	mov x5.u64.Hi,edx
	mov ebx,x6.u64.Lo
	mov ecx,x6.u64.Hi
	add ebx,eax
	adc ecx,edx
	mov x6.u64.Lo,ebx
	mov x6.u64.Hi,ecx
	mov eax,x7.u64.Lo
	mov edx,x7.u64.Hi
	xor ebx,089ABCDEFh
	xor ecx,001234567h
	sub eax,ebx
	sbb edx,ecx
	mov x7.u64.Lo,eax
	mov x7.u64.Hi,edx
ENDM

ROUND MACRO a_,b_,c_,x_,mulp
	mov ebx,[x_].u64.Lo
	mov ecx,[x_].u64.Hi
	mov eax,[c_].u64.Lo
	mov edx,[c_].u64.Hi
	xor eax,ebx
	xor edx,ecx
	mov [c_].u64.Lo,eax
	mov [c_].u64.Hi,edx
	mov ebx,eax
	mov ecx,edx
	and ebx,0FFh
	and ecx,0FFh
	mov esi,[TigerK1+8*ebx].u64.Lo;0
	mov edi,[TigerK1+8*ebx].u64.Hi
	xor esi,[TigerK3+8*ecx].u64.Lo;1
	xor edi,[TigerK3+8*ecx].u64.Hi
	mov ebx,eax
	mov ecx,edx
	shr ebx,16
	and ebx,0FFh
	shr ecx,16	
	and ecx,0FFh
	xor esi,[TigerK2+8*ebx].u64.Lo;2
	xor edi,[TigerK2+8*ebx].u64.Hi
	xor esi,[TigerK4+8*ecx].u64.Lo;3
	xor edi,[TigerK4+8*ecx].u64.Hi
	mov Tigertmp[0],esi
	mov Tigertmp[4],edi
	mov ebx,eax
	mov ecx,edx
	shr ebx,8
	and ebx,0FFh
	shr ecx,8
	and ecx,0FFh
	mov esi,[TigerK4+8*ebx].u64.Lo
	mov edi,[TigerK4+8*ebx].u64.Hi
	xor esi,[TigerK2+8*ecx].u64.Lo
	xor edi,[TigerK2+8*ecx].u64.Hi
	shr eax,24
	shr edx,24
	xor esi,[TigerK3+8*eax].u64.Lo
	xor edi,[TigerK3+8*eax].u64.Hi
	xor esi,[TigerK1+8*edx].u64.Lo
	xor edi,[TigerK1+8*edx].u64.Hi
	add esi,[b_].u64.Lo
	adc edi,[b_].u64.Hi
	mov eax,Tigertmp[0]
	mov edx,Tigertmp[4]
	sub [a_].u64.Lo,eax
	sbb [a_].u64.Hi,edx
	if mulp eq 5
	mov ebx,esi
	mov ecx,edi
	shld edi,esi,2
	shl esi,2
	add esi,ebx
	adc edi,ecx	
	elseif mulp eq 7
	mov ebx,esi
	mov ecx,edi
	shld edi,esi,3
	shl esi,3
	sub esi,ebx
	sbb edi,ecx	
	elseif mulp eq 9
	mov ebx,esi
	mov ecx,edi
	shld edi,esi,3
	shl esi,3
	add esi,ebx
	adc edi,ecx	
	endif
	mov [b_].u64.Lo,esi
	mov [b_].u64.Hi,edi
ENDM

align 4
TigerTransform proc
	pushad
	Tigerlocals equ 12*8
	sub esp,Tigerlocals
	x0 equ [esp+0*8]
	x1 equ [esp+1*8]
	x2 equ [esp+2*8]
	x3 equ [esp+3*8]
	x4 equ [esp+4*8]
	x5 equ [esp+5*8]
	x6 equ [esp+6*8]
	x7 equ [esp+7*8]
	llA equ [esp+8*8]
	llB equ [esp+9*8]
	llC equ [esp+10*8]
	Tigertmp equ dword ptr [esp+11*8]
	
	mov esi,offset TigerDigest
	mov edi,offset TigerHashBuf	
	MOV64 llA,esi[0*8]
	MOV64 llB,esi[1*8]
	MOV64 llC,esi[2*8]
	MOV64 x0,edi[0*8]
	MOV64 x1,edi[1*8]
	MOV64 x2,edi[2*8]
	MOV64 x3,edi[3*8]
	MOV64 x4,edi[4*8]
	MOV64 x5,edi[5*8]
	MOV64 x6,edi[6*8]
	MOV64 x7,edi[7*8]

	ROUND llA,llB,llC,x0,5
	ROUND llB,llC,llA,x1,5
	ROUND llC,llA,llB,x2,5
	ROUND llA,llB,llC,x3,5
	ROUND llB,llC,llA,x4,5
	ROUND llC,llA,llB,x5,5
	ROUND llA,llB,llC,x6,5
	ROUND llB,llC,llA,x7,5

	KEY_SCHEDULE

	ROUND llC,llA,llB,x0,7
	ROUND llA,llB,llC,x1,7
	ROUND llB,llC,llA,x2,7
	ROUND llC,llA,llB,x3,7
	ROUND llA,llB,llC,x4,7
	ROUND llB,llC,llA,x5,7
	ROUND llC,llA,llB,x6,7
	ROUND llA,llB,llC,x7,7	

	KEY_SCHEDULE

	ROUND llB,llC,llA,x0,9
	ROUND llC,llA,llB,x1,9
	ROUND llA,llB,llC,x2,9
	ROUND llB,llC,llA,x3,9
	ROUND llC,llA,llB,x4,9
	ROUND llA,llB,llC,x5,9
	ROUND llB,llC,llA,x6,9
	ROUND llC,llA,llB,x7,9
	mov esi,offset TigerDigest
	XOR64 esi[0*8],llA
	SUB64 llB,esi[1*8]
	MOV64 esi[1*8],llB
	ADD64 [esi+2*8],llC
	add esp,Tigerlocals
	popad
	ret
TigerTransform endp

TigerBURN macro
	xor eax,eax
	mov TigerIndex,eax
	mov edi,Offset TigerHashBuf
	mov ecx,(sizeof TigerHashBuf)/4
	rep stosd
endm

align 4
TigerInit proc uses edi esi
	xor eax,eax
	mov TigerLen,eax
	mov edi,Offset TigerDigest
	mov esi,Offset TigerCHAIN
	mov ecx,(sizeof TigerDigest)/4
	rep movsd	
	TigerBURN
	mov eax,Offset TigerDigest 
	ret
TigerInit endp

align 4
TigerUpdate proc uses esi edi ebx lpBuffer:dword, dwBufLen:dword
	mov ebx,dwBufLen
	add TigerLen,ebx
	.while ebx
		mov eax,TigerIndex
		mov edx,64
		sub edx,eax
		.if edx <= ebx
			lea edi, [TigerHashBuf+eax]	
			mov esi, lpBuffer
			mov ecx, edx
			rep movsb
			sub ebx, edx
			add lpBuffer, edx
			call TigerTransform
			TigerBURN
		.else
			lea edi, [TigerHashBuf+eax]	
			mov esi, lpBuffer
			mov ecx, ebx
			rep movsb
			mov eax, TigerIndex
			add eax, ebx
			mov TigerIndex,eax
			.break
		.endif
	.endw
	ret
TigerUpdate endp

align 4
TigerFinal proc uses esi edi
	mov ecx, TigerIndex
	mov byte ptr [TigerHashBuf+ecx],01h
	.if ecx >= 56
		call TigerTransform
		TigerBURN
	.endif
	mov eax,TigerLen
	xor edx,edx
	shld edx,eax,3
	shl eax,3
	mov dword ptr [TigerHashBuf+56],eax
	mov dword ptr [TigerHashBuf+60],edx
	call TigerTransform
	mov eax,offset TigerDigest
	xor ecx,ecx
;	.repeat; DwSWAP
;		mov	esi,[eax+ecx].u64.Lo
;		mov	edi,[eax+ecx].u64.Hi
;		bswap esi
;		bswap edi
;		mov	[eax+ecx].u64.Hi,esi
;		mov	[eax+ecx].u64.Lo,edi
;		add ecx,8
;	.until ecx==192/8	
	ret
TigerFinal endp

end

⌨️ 快捷键说明

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