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

📄 sha1.inc

📁 The dinamyc link library that contains an implementation of SHA1, SHA512, CRC32, CRC32b, Adler32, Tw
💻 INC
📖 第 1 页 / 共 4 页
字号:
	xor	  esi,[ebx+8]
	xor	  esi,[ebx]
	shr	  esi,31
	or	  ecx,esi
	mov	  [ebx],ecx
	mov	  esi,[ebp-4]
	xor	  esi,[ebp-8]
	xor	  esi,[ebp-12]
	add	  ecx,esi
	mov	  esi,edx
	shl	  esi,5
	mov	  edi,edx
	shr	  edi,27
	or	  esi,edi
	add	  ecx,esi
	add	  ecx,-899497514
	add	  eax,ecx
	mov	  ecx,[ebp-4]
	shl	  ecx,30
	mov	  esi,[ebp-4]
	shr	  esi,2
	or	  ecx,esi
	mov	  [ebp-4],ecx
	mov	  ecx,[ebx+56]
	xor	  ecx,[ebx+36]
	xor	  ecx,[ebx+12]
	xor	  ecx,[ebx+4]
	add	  ecx,ecx
	mov	  esi,[ebx+56]
	xor	  esi,[ebx+36]
	xor	  esi,[ebx+12]
	xor	  esi,[ebx+4]
	shr	  esi,31
	or	  ecx,esi
	mov	  [ebx+4],ecx
	mov	  esi,[ebp-4]
	xor	  esi,edx
	xor	  esi,[ebp-8]
	add	  ecx,esi
	mov	  esi,eax
	shl	  esi,5
	mov	  edi,eax
	shr	  edi,27
	or	  esi,edi
	add	  ecx,esi
	add	  ecx,-899497514
	add	  [ebp-12],ecx
	mov	  ecx,edx
	shl	  ecx,30
	shr	  edx,2
	or	  ecx,edx
	mov	  edx,ecx
	mov	  ecx,[ebx+60]
	xor	  ecx,[ebx+40]
	xor	  ecx,[ebx+16]
	xor	  ecx,[ebx+8]
	add	  ecx,ecx
	mov	  esi,[ebx+60]
	xor	  esi,[ebx+40]
	xor	  esi,[ebx+16]
	xor	  esi,[ebx+8]
	shr	  esi,31
	or	  ecx,esi
	mov	  [ebx+8],ecx
	mov	  esi,edx
	xor	  esi,eax
	xor	  esi,[ebp-4]
	add	  ecx,esi
	mov	  esi,[ebp-12]
	shl	  esi,5
	mov	  edi,[ebp-12]
	shr	  edi,27
	or	  esi,edi
	add	  ecx,esi
	add	  ecx,-899497514
	add	  [ebp-8],ecx
	mov	  ecx,eax
	shl	  ecx,30
	shr	  eax,2
	or	  ecx,eax
	mov	  eax,ecx
	mov	  ecx,[ebx]
	xor	  ecx,[ebx+44]
	xor	  ecx,[ebx+20]
	xor	  ecx,[ebx+12]
	add	  ecx,ecx
	mov	  esi,[ebx]
	xor	  esi,[ebx+44]
	xor	  esi,[ebx+20]
	xor	  esi,[ebx+12]
	shr	  esi,31
	or	  ecx,esi
	mov	  [ebx+12],ecx
	mov	  esi,[ebp-12]
	xor	  esi,eax
	xor	  esi,edx
	add	  ecx,esi
	mov	  esi,[ebp-8]
	shl	  esi,5
	mov	  edi,[ebp-8]
	shr	  edi,27
	or	  esi,edi
	add	  ecx,esi
	add	  ecx,-899497514
	add	  [ebp-4],ecx
	mov	  ecx,[ebp-12]
	shl	  ecx,30
	mov	  esi,[ebp-12]
	shr	  esi,2
	or	  ecx,esi
	mov	  [ebp-12],ecx

	mov	  ecx,[ebx+4]
	xor	  ecx,[ebx+48]
	xor	  ecx,[ebx+24]
	xor	  ecx,[ebx+16]
	add	  ecx,ecx
	mov	  esi,[ebx+4]
	xor	  esi,[ebx+48]
	xor	  esi,[ebx+24]
	xor	  esi,[ebx+16]
	shr	  esi,31
	or	  ecx,esi
	mov	  [ebx+16],ecx
	mov	  esi,[ebp-8]
	xor	  esi,[ebp-12]
	xor	  esi,eax
	add	  ecx,esi
	mov	  esi,[ebp-4]
	shl	  esi,5
	mov	  edi,[ebp-4]
	shr	  edi,27
	or	  esi,edi
	add	  ecx,esi
	add	  ecx,-899497514
	add	  edx,ecx
	mov	  ecx,[ebp-8]
	shl	  ecx,30
	mov	  esi,[ebp-8]
	shr	  esi,2
	or	  ecx,esi
	mov	  [ebp-8],ecx
	mov	  ecx,[ebx+8]
	xor	  ecx,[ebx+52]
	xor	  ecx,[ebx+28]
	xor	  ecx,[ebx+20]
	add	  ecx,ecx
	mov	  esi,[ebx+8]
	xor	  esi,[ebx+52]
	xor	  esi,[ebx+28]
	xor	  esi,[ebx+20]
	shr	  esi,31
	or	  ecx,esi
	mov	  [ebx+20],ecx
	mov	  esi,[ebp-4]
	xor	  esi,[ebp-8]
	xor	  esi,[ebp-12]
	add	  ecx,esi
	mov	  esi,edx
	shl	  esi,5
	mov	  edi,edx
	shr	  edi,27
	or	  esi,edi
	add	  ecx,esi
	add	  ecx,-899497514
	add	  eax,ecx
	mov	  ecx,[ebp-4]
	shl	  ecx,30
	mov	  esi,[ebp-4]
	shr	  esi,2
	or	  ecx,esi
	mov	  [ebp-4],ecx
	mov	  ecx,[ebx+12]
	xor	  ecx,[ebx+56]
	xor	  ecx,[ebx+32]
	xor	  ecx,[ebx+24]
	add	  ecx,ecx
	mov	  esi,[ebx+12]
	xor	  esi,[ebx+56]
	xor	  esi,[ebx+32]
	xor	  esi,[ebx+24]
	shr	  esi,31
	or	  ecx,esi
	mov	  [ebx+24],ecx
	mov	  esi,[ebp-4]
	xor	  esi,edx
	xor	  esi,[ebp-8]
	add	  ecx,esi
	mov	  esi,eax
	shl	  esi,5
	mov	  edi,eax
	shr	  edi,27
	or	  esi,edi
	add	  ecx,esi
	add	  ecx,-899497514
	add	  [ebp-12],ecx
	mov	  ecx,edx
	shl	  ecx,30
	shr	  edx,2
	or	  ecx,edx
	mov	  edx,ecx
	mov	  ecx,[ebx+16]
	xor	  ecx,[ebx+60]
	xor	  ecx,[ebx+36]
	xor	  ecx,[ebx+28]
	add	  ecx,ecx
	mov	  esi,[ebx+16]
	xor	  esi,[ebx+60]
	xor	  esi,[ebx+36]
	xor	  esi,[ebx+28]
	shr	  esi,31
	or	  ecx,esi
	mov	  [ebx+28],ecx
	mov	  esi,edx
	xor	  esi,eax
	xor	  esi,[ebp-4]
	add	  ecx,esi
	mov	  esi,[ebp-12]
	shl	  esi,5
	mov	  edi,[ebp-12]
	shr	  edi,27
	or	  esi,edi
	add	  ecx,esi
	add	  ecx,-899497514
	add	  [ebp-8],ecx
	mov	  ecx,eax
	shl	  ecx,30
	shr	  eax,2
	or	  ecx,eax
	mov	  eax,ecx

	mov	  ecx,[ebx+20]
	xor	  ecx,[ebx]
	xor	  ecx,[ebx+40]
	xor	  ecx,[ebx+32]
	add	  ecx,ecx
	mov	  esi,[ebx+20]
	xor	  esi,[ebx]
	xor	  esi,[ebx+40]
	xor	  esi,[ebx+32]
	shr	  esi,31
	or	  ecx,esi
	mov	  [ebx+32],ecx
	mov	  esi,[ebp-12]
	xor	  esi,eax
	xor	  esi,edx
	add	  ecx,esi
	mov	  esi,[ebp-8]
	shl	  esi,5
	mov	  edi,[ebp-8]
	shr	  edi,27
	or	  esi,edi
	add	  ecx,esi
	add	  ecx,-899497514
	add	  [ebp-4],ecx
	mov	  ecx,[ebp-12]
	shl	  ecx,30
	mov	  esi,[ebp-12]
	shr	  esi,2
	or	  ecx,esi
	mov	  [ebp-12],ecx
	mov	  ecx,[ebx+24]
	xor	  ecx,[ebx+4]
	xor	  ecx,[ebx+44]
	xor	  ecx,[ebx+36]
	add	  ecx,ecx
	mov	  esi,[ebx+24]
	xor	  esi,[ebx+4]
	xor	  esi,[ebx+44]
	xor	  esi,[ebx+36]
	shr	  esi,31
	or	  ecx,esi
	mov	  [ebx+36],ecx
	mov	  esi,[ebp-8]
	xor	  esi,[ebp-12]
	xor	  esi,eax
	add	  ecx,esi
	mov	  esi,[ebp-4]
	shl	  esi,5
	mov	  edi,[ebp-4]
	shr	  edi,27
	or	  esi,edi
	add	  ecx,esi
	add	  ecx,-899497514
	add	  edx,ecx
	mov	  ecx,[ebp-8]
	shl	  ecx,30
	mov	  esi,[ebp-8]
	shr	  esi,2
	or	  ecx,esi
	mov	  [ebp-8],ecx
	mov	  ecx,[ebx+28]
	xor	  ecx,[ebx+8]
	xor	  ecx,[ebx+48]
	xor	  ecx,[ebx+40]
	add	  ecx,ecx
	mov	  esi,[ebx+28]
	xor	  esi,[ebx+8]
	xor	  esi,[ebx+48]
	xor	  esi,[ebx+40]
	shr	  esi,31
	or	  ecx,esi
	mov	  [ebx+40],ecx
	mov	  esi,[ebp-4]
	xor	  esi,[ebp-8]
	xor	  esi,[ebp-12]
	add	  ecx,esi
	mov	  esi,edx
	shl	  esi,5
	mov	  edi,edx
	shr	  edi,27
	or	  esi,edi
	add	  ecx,esi
	add	  ecx,-899497514
	add	  eax,ecx
	mov	  ecx,[ebp-4]
	shl	  ecx,30
	mov	  esi,[ebp-4]
	shr	  esi,2
	or	  ecx,esi
	mov	  [ebp-4],ecx
	mov	  ecx,[ebx+32]
	xor	  ecx,[ebx+12]
	xor	  ecx,[ebx+52]
	xor	  ecx,[ebx+44]
	add	  ecx,ecx
	mov	  esi,[ebx+32]
	xor	  esi,[ebx+12]
	xor	  esi,[ebx+52]
	xor	  esi,[ebx+44]
	shr	  esi,31
	or	  ecx,esi
	mov	  [ebx+44],ecx
	mov	  esi,[ebp-4]
	xor	  esi,edx
	xor	  esi,[ebp-8]
	add	  ecx,esi
	mov	  esi,eax
	shl	  esi,5
	mov	  edi,eax
	shr	  edi,27
	or	  esi,edi
	add	  ecx,esi
	add	  ecx,-899497514
	add	  [ebp-12],ecx
	mov	  ecx,edx
	shl	  ecx,30
	shr	  edx,2
	or	  ecx,edx
	mov	  edx,ecx

	mov	  ecx,[ebx+36]
	xor	  ecx,[ebx+16]
	xor	  ecx,[ebx+56]
	xor	  ecx,[ebx+48]
	add	  ecx,ecx
	mov	  esi,[ebx+36]
	xor	  esi,[ebx+16]
	xor	  esi,[ebx+56]
	xor	  esi,[ebx+48]
	shr	  esi,31
	or	  ecx,esi
	mov	  [ebx+48],ecx
	mov	  esi,edx
	xor	  esi,eax
	xor	  esi,[ebp-4]
	add	  ecx,esi
	mov	  esi,[ebp-12]
	shl	  esi,5
	mov	  edi,[ebp-12]
	shr	  edi,27
	or	  esi,edi
	add	  ecx,esi
	add	  ecx,-899497514
	add	  [ebp-8],ecx
	mov	  ecx,eax
	shl	  ecx,30
	shr	  eax,2
	or	  ecx,eax
	mov	  eax,ecx
	mov	  ecx,[ebx+40]
	xor	  ecx,[ebx+20]
	xor	  ecx,[ebx+60]
	xor	  ecx,[ebx+52]
	add	  ecx,ecx
	mov	  esi,[ebx+40]
	xor	  esi,[ebx+20]
	xor	  esi,[ebx+60]
	xor	  esi,[ebx+52]
	shr	  esi,31
	or	  ecx,esi
	mov	  [ebx+52],ecx
	mov	  esi,[ebp-12]
	xor	  esi,eax
	xor	  esi,edx
	add	  ecx,esi
	mov	  esi,[ebp-8]
	shl	  esi,5
	mov	  edi,[ebp-8]
	shr	  edi,27
	or	  esi,edi
	add	  ecx,esi
	add	  ecx,-899497514
	add	  [ebp-4],ecx
	mov	  ecx,[ebp-12]
	shl	  ecx,30
	mov	  esi,[ebp-12]
	shr	  esi,2
	or	  ecx,esi
	mov	  [ebp-12],ecx
	mov	  ecx,[ebx+44]
	xor	  ecx,[ebx+24]
	xor	  ecx,[ebx]
	xor	  ecx,[ebx+56]
	add	  ecx,ecx
	mov	  esi,[ebx+44]
	xor	  esi,[ebx+24]
	xor	  esi,[ebx]
	xor	  esi,[ebx+56]
	shr	  esi,31
	or	  ecx,esi
	mov	  [ebx+56],ecx
	mov	  esi,[ebp-8]
	xor	  esi,[ebp-12]
	xor	  esi,eax
	add	  ecx,esi
	mov	  esi,[ebp-4]
	shl	  esi,5
	mov	  edi,[ebp-4]
	shr	  edi,27
	or	  esi,edi
	add	  ecx,esi
	add	  ecx,-899497514
	add	  edx,ecx
	mov	  ecx,[ebp-8]
	shl	  ecx,30
	mov	  esi,[ebp-8]
	shr	  esi,2
	or	  ecx,esi
	mov	  [ebp-8],ecx
	mov	  ecx,[ebx+48]
	xor	  ecx,[ebx+28]
	xor	  ecx,[ebx+4]
	xor	  ecx,[ebx+60]
	add	  ecx,ecx
	mov	  esi,[ebx+48]
	xor	  esi,[ebx+28]
	xor	  esi,[ebx+4]
	xor	  esi,[ebx+60]
	shr	  esi,31
	or	  ecx,esi
	mov	  [ebx+60],ecx
	mov	  ebx,[ebp-4]
	xor	  ebx,[ebp-8]
	xor	  ebx,[ebp-12]
	add	  ecx,ebx
	mov	  ebx,edx
	shl	  ebx,5
	mov	  esi,edx
	shr	  esi,27
	or	  ebx,esi
	add	  ecx,ebx
	add	  ecx,-899497514
	add	  eax,ecx
	mov	  ecx,[ebp-4]
	shl	  ecx,30
	mov	  ebx,[ebp-4]
	shr	  ebx,2
	or	  ecx,ebx
	mov	  [ebp-4],ecx

	mov	  ecx,[ebp+8]
	add	  [ecx],eax
	mov	  eax,[ebp+8]
	add	  [eax+4],edx
	mov	  edx,[ebp+8]
	mov	  eax,[ebp-4]
	add	  [edx+8],eax
	mov	  edx,[ebp+8]
	mov	  ecx,[ebp-8]
	add	  [edx+12],ecx
	mov	  eax,[ebp+8]
	mov	  edx,[ebp-12]
	add	  [eax+16],edx
	xor	  ecx,ecx
	mov	  [ebp-12],ecx
	mov	  [ebp-8],ecx
	mov	  [ebp-4],ecx
	mov	  edx,ecx
@2:
	pop	  edi
	pop	  esi
	pop	  ebx
	mov	  esp,ebp
	pop	  ebp
	retn	  8

align 4
_SHA1_Init:
   ;    void _SHA1_Init(SHA1_CTX* context)
	push	  ebp
	mov	  ebp,esp
	mov	  eax,[ebp+8]
	mov	  dword [eax],067452301h
	mov	  dword [eax+4],0EFCDAB89h
	mov	  dword [eax+8],098BADCFEh
	mov	  dword [eax+12],010325476h
	mov	  dword [eax+16],0C3D2E1F0h
	xor	  edx,edx
	mov	  [eax+24],edx
	mov	  [eax+20],edx
	pop	  ebp
	retn	  4

align 4
_SHA1_Update:
   ;    void _SHA1_Update(SHA1_CTX* context, unsigned char* data, unsigned int len)
	push	  ebp
	mov	  ebp,esp
	push	  ebx
	push	  esi
	push	  edi
	mov	  edi,[ebp+16]
	mov	  esi,[ebp+8]
@5:
	mov	  eax,[esi+20]
	shr	  eax,3
	and	  eax,63
	mov	  edx,edi
	shl	  edx,3
	add	  [esi+20],edx
	mov	  ecx,[esi+20]
	mov	  edx,edi
	shl	  edx,3
	cmp	  ecx,edx
	jae	  @6
	inc	  dword [esi+24]
@6:
	mov	  ecx,edi
	shr	  ecx,29
	add	  [esi+24],ecx
	lea	  edx,[edi+eax]
	cmp	  edx,63
	jbe	   @7
	mov	  ebx,64
	sub	  ebx,eax
	add	  eax,esi
	add	  eax,28
	stdcall   memcpy,eax,dword[ebp+12],ebx
	lea	  eax,[esi+28]
	push	  eax
	push	  esi
	call	  _SHA1_Transform
	jmp	   @9
@8:
	mov	  edx,[ebp+12]
	add	  edx,ebx
	push	  edx
	push	  esi
	call	  _SHA1_Transform
	add	  ebx,64
@9:
	lea	  ecx,[ebx+63]
	cmp	  edi,ecx
	ja	    @8
	xor	  eax,eax
	jmp	    @11
@7:
	xor	  ebx,ebx
@11:
	sub	  edi,ebx
	mov	  edx,[ebp+12]
	add	  edx,ebx
	add	  esi,eax
	add	  esi,28
	stdcall   memcpy,esi,edx,edi
@12:
	pop	  edi
	pop	  esi
	pop	  ebx
	pop	  ebp
	retn	  12

align 4
_SHA1_Final:
   ;    void _SHA1_Final(unsigned char digest[20], SHA1_CTX* context)
	push	  ebp
	mov	  ebp,esp
	add	  esp,-8
	push	  ebx
	push	  esi
	mov	  ebx,[ebp+12]
	mov	  esi,[ebp+8]
@13:
	xor	  eax,eax
@14:
	mov	  edx,eax
	and	  edx,3
	mov	  ecx,3
	sub	  ecx,edx
	shl	  ecx,3
	cmp	  eax,4
	jb	    @16
	xor	  edx,edx
	jmp	    @17
@16:
	mov	  edx,1
@17:
	mov	  edx,[ebx+4*edx+20]
	shr	  edx,cl
	and	  dl,-1
	mov	  [ebp+eax-8],dl
	inc	  eax
	cmp	  eax,8
	jb	  @14
	push	  1
	push	  s@
	push	  ebx
	call	  _SHA1_Update
	jmp	  @20
@19:
	push	  1
	push	  s@+2
	push	  ebx
	call	  _SHA1_Update
@20:
	mov	  eax,[ebx+20]
	and	  eax,504
	cmp	  eax,448
	jne	  @19
	push	  8
	lea	  ecx,[ebp-8]
	push	  ecx
	push	  ebx
	call	  _SHA1_Update
	xor	  eax,eax
@21:
	mov	  edx,eax
	and	  edx,3
	mov	  ecx,3
	sub	  ecx,edx
	shl	  ecx,3
	mov	  edx,eax
	shr	  edx,2
	mov	  edx,[ebx+4*edx]
	shr	  edx,cl
	and	  dl,-1
	mov	  [esi+eax],dl
	inc	  eax
	cmp	  eax,20
	jb	    @21
	xor	  ecx,ecx
	mov	  eax,ecx
	lea	  eax,[ebx+28]
	stdcall   memset,eax,64,0
	stdcall   memset,ebx,20,0
	lea	  eax,[ebx+20]
	stdcall   memset,eax,8,0
	lea	  edx,[ebp-8]
	stdcall   memset,edx,8,0
	lea	  ecx,[ebx+28]
	push	  ecx
	push	  ebx
	call	  _SHA1_Transform
@24:
	pop	  esi
	pop	  ebx
	pop	  ecx
	pop	  ecx
	pop	  ebp
	retn	  8

proc SHA1_Init
     stdcall _SHA1_Init,SHA1Context
     ret
endp

proc SHA1_Update,Buffer:PBYTE,BufSize:DWORD
     stdcall _SHA1_Update,SHA1Context,[Buffer],[BufSize]
     ret
endp

proc SHA1_Final,_SHA1Digest:PBYTE
     stdcall _SHA1_Final,[_SHA1Digest],SHA1Context
     ret
endp

⌨️ 快捷键说明

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