crc32.asm

来自「ASM 多种hash模块,汇编源码 MD2,4,5 SHA 等多种加密算法 」· 汇编 代码 · 共 43 行

ASM
43
字号
.686
.model flat,stdcall
option casemap:none

.data
align 16
CRC32Table label dword
i = 0
crc = i
WHILE i LT 256
	crc = i
	REPT 8
	    crc = (crc shr 1) xor (0EDB88320h * (crc and 1))
	ENDM
	DD crc
	i = i + 1
ENDM

.code

align 16
CRC32 proc uses esi lpBuffer:DWORD,dwBufLen:DWORD,dwCRC:DWORD
	mov eax,dwCRC
	mov ecx,dwBufLen
	xor eax,-1
	test ecx,ecx
	mov esi,lpBuffer
	jz @F
	.repeat
		xor al,[esi]
		movzx edx,al
		shr eax,8
		mov edx,[CRC32Table+edx*4]
		inc esi
		xor eax,edx
		dec ecx
	.until zero?
@@:	xor eax,-1
	ret
CRC32 endp

end

⌨️ 快捷键说明

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