📄 sha1.inc
字号:
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 + -