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

📄 tea.asm

📁 ASM 多种hash模块,汇编源码 MD2,4,5 SHA 等多种加密算法 还有其他赠送内容
💻 ASM
字号:
; data   = 8 bytes (64-bit)
; keylen = 16 bytes (128-bit)
; rounds = 32

.686
.model flat,stdcall
option casemap:none


TEAInit	proto :DWORD
TEAEncrypt	proto :DWORD,:DWORD
TEADecrypt	proto :DWORD,:DWORD

TEA_ROUNDS equ 32
TEA_DELTA equ 9E3779B9h

.data?
TEA_KEY dd 4 dup(?)

.code

align dword
TEAInit proc pKey:DWORD
	mov eax,pKey
	mov ecx,[eax+0*4]
	mov edx,[eax+1*4]
	bswap ecx
	bswap edx
	mov [TEA_KEY+0*4],ecx
	mov [TEA_KEY+1*4],edx
	mov ecx,[eax+2*4]
	mov edx,[eax+3*4]
	bswap ecx
	bswap edx
	mov [TEA_KEY+2*4],ecx
	mov [TEA_KEY+3*4],edx
	ret
TEAInit endp

TEAROUND macro y,z,k,enc
	mov ecx,z
	shl ecx,4
	mov edi,z
	lea esi,[z+ebx]
	add ecx,[TEA_KEY+(k+0)*4]
	shr edi,5
	xor ecx,esi
	add edi,[TEA_KEY+(k+1)*4]
	xor ecx,edi
	if enc eq 1 
	add y,ecx
	else
	sub y,ecx
	endif
endm

align dword
TEAEncrypt proc uses edi esi ebx pBlockIn:DWORD,pBlockOut:DWORD
	mov esi,pBlockIn
	mov eax,[esi+0*4];y
	mov edx,[esi+1*4];z
	xor ebx,ebx
	bswap eax
	bswap edx
	.repeat
		add ebx,TEA_DELTA
		TEAROUND eax,edx,0,1
		TEAROUND edx,eax,2,1
		add ebx,TEA_DELTA
		TEAROUND eax,edx,0,1
		TEAROUND edx,eax,2,1
	.until ebx == TEA_DELTA*TEA_ROUNDS
	bswap eax
	bswap edx
	mov esi,pBlockOut
	mov [esi+0*4],eax
	mov [esi+1*4],edx
	ret
TEAEncrypt endp

align dword
TEADecrypt proc uses edi esi ebx pBlockIn:DWORD,pBlockOut:DWORD
	mov esi,pBlockIn
	mov eax,[esi+0*4]
	mov edx,[esi+1*4]
	mov ebx,TEA_DELTA*TEA_ROUNDS
	bswap eax
	bswap edx
	.repeat
		TEAROUND edx,eax,2,0
		TEAROUND eax,edx,0,0
		sub ebx,TEA_DELTA
		TEAROUND edx,eax,2,0
		TEAROUND eax,edx,0,0
		sub ebx,TEA_DELTA
	.until zero?
	bswap eax
	bswap edx
	mov esi,pBlockOut
	mov [esi+0*4],eax
	mov [esi+1*4],edx
	ret
TEADecrypt endp

end

⌨️ 快捷键说明

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