ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

17.09.2007, 14:07
|
|
Постоянный
Регистрация: 25.05.2007
Сообщений: 448
Провел на форуме: 4226446
Репутация:
1564
|
|
Алгоритм: adler32
Синтаксис: masm
Описание: оптимизированный алгоритм вычисления контрольных сумм adler32.
Код:
Код:
.686
.model flat,stdcall
option casemap:none
.const
ADLER32_BASE equ 65521
ADLER32_NMAX equ 5552
.code
align dword
Adler32 proc uses edi esi ebx lpBuffer:DWORD, dwBufLen:DWORD, dwAdler:DWORD
mov eax,dwAdler
mov ecx,dwBufLen
mov ebx,dwAdler
and eax,0FFFFh
shr ebx,16
mov esi,lpBuffer
jmp @F
.repeat
mov edi,ADLER32_NMAX
.if ecx<edi
mov edi,ecx
.endif
sub ecx,edi
.repeat
movzx edx,byte ptr [esi]
add eax,edx
inc esi
add ebx,eax
dec edi
.until ZERO?
mov edi,ADLER32_BASE
xor edx,edx
div edi
push edx
mov eax,ebx
sub edx,edx
div edi
mov ebx,edx
pop eax
@@:
test ecx,ecx
.until ZERO?
shl ebx,16
add eax,ebx
ret
Adler32 endp
end
|
|
|

03.10.2007, 21:10
|
|
Постоянный
Регистрация: 25.05.2007
Сообщений: 448
Провел на форуме: 4226446
Репутация:
1564
|
|
Алгоритм: Реализация агоритма sha-1
Синтаксис: masm
Описание: оптимизированный алгоритм sha-1
Комментарий: самая вменяемая реализация из всех мне встречавшихся.
Код:
Код:
.686
.model flat,stdcall
option casemap:none
.data?
SHA1HashBuf db 64 dup(?)
SHA1Len dd ?
SHA1Index dd ?
SHA1Digest dd 5 dup(?)
.code
SHA1F0 macro dwA, dwB, dwC, dwD, dwE, locX, constAC
mov edi, dwC
xor edi, dwD
and edi, dwB
xor edi, dwD
lea dwE, [dwE + constAC + edi]
rol dwB, 30
mov edi, dwA
rol edi, 05
add dwE, [locX]
add dwE, edi
ENDM
SHA1F1 macro dwA, dwB, dwC, dwD, dwE, locX, constAC
mov edi, dwC
xor edi, dwD
xor edi, dwB
lea dwE, [dwE + constAC + edi]
rol dwB, 30
mov edi, dwA
rol edi, 05
add dwE, [locX]
add dwE, edi
ENDM
SHA1F2 macro dwA, dwB, dwC, dwD, dwE, locX, constAC
mov edi,dwB
or edi,dwC
and edi,dwD
mov ebp,edi
mov edi,dwB
and edi,dwC
or edi,ebp
lea dwE,[dwE + constAC + edi]
rol dwB,30
mov edi,dwA
rol edi,05
add dwE,[locX]
add dwE,edi
ENDM
SHA1F3 macro dwA, dwB, dwC, dwD, dwE, locX, constAC
mov edi,dwC
xor edi,dwD
xor edi,dwB
lea dwE,[dwE + constAC + edi]
rol dwB,30
mov edi,dwA
rol edi,05
add dwE,[locX]
add dwE,edi
endm
align dword
SHA1Transform proc
pushad
SHA1locals equ 80*4
sub esp,SHA1locals
SHA1W equ dword ptr [esp]
mov edi,offset SHA1HashBuf
xor ebx,ebx
.repeat
mov eax,[edi+ebx*4]
mov ecx,[edi+ebx*4+4]
mov edx,[edi+ebx*4+32]
mov esi,[edi+ebx*4+32+4]
bswap eax
bswap edx
bswap ecx
bswap esi
mov SHA1W[ebx*4],eax
mov SHA1W[ebx*4+4],ecx
mov SHA1W[ebx*4+32],edx
mov SHA1W[ebx*4+32+4],esi
inc ebx
inc ebx
.until ebx==8
shl ebx,1
.repeat
mov eax,SHA1W[(4*ebx)-03*4]
mov edx,SHA1W[(4*ebx+4)-03*4]
xor eax,SHA1W[(4*ebx)-08*4]
xor edx,SHA1W[(4*ebx+4)-08*4]
xor eax,SHA1W[(4*ebx)-14*4]
xor edx,SHA1W[(4*ebx+4)-14*4]
xor eax,SHA1W[(4*ebx)-16*4]
xor edx,SHA1W[(4*ebx+4)-16*4]
rol eax,1
mov SHA1W[4*ebx],eax
rol edx,1
mov SHA1W[4*ebx+4],edx
inc ebx
inc ebx
.until ebx==80
mov edi,offset SHA1Digest
mov eax,[edi+0*4]
mov ebx,[edi+1*4]
mov ecx,[edi+2*4]
mov edx,[edi+3*4]
mov esi,[edi+4*4]
;========================================================
SHA1F0 eax, ebx, ecx, edx, esi, SHA1W[00*4], 05a827999h
SHA1F0 esi, eax, ebx, ecx, edx, SHA1W[01*4], 05a827999h
SHA1F0 edx, esi, eax, ebx, ecx, SHA1W[02*4], 05a827999h
SHA1F0 ecx, edx, esi, eax, ebx, SHA1W[03*4], 05a827999h
SHA1F0 ebx, ecx, edx, esi, eax, SHA1W[04*4], 05a827999h
SHA1F0 eax, ebx, ecx, edx, esi, SHA1W[05*4], 05a827999h
SHA1F0 esi, eax, ebx, ecx, edx, SHA1W[06*4], 05a827999h
SHA1F0 edx, esi, eax, ebx, ecx, SHA1W[07*4], 05a827999h
SHA1F0 ecx, edx, esi, eax, ebx, SHA1W[08*4], 05a827999h
SHA1F0 ebx, ecx, edx, esi, eax, SHA1W[09*4], 05a827999h
SHA1F0 eax, ebx, ecx, edx, esi, SHA1W[10*4], 05a827999h
SHA1F0 esi, eax, ebx, ecx, edx, SHA1W[11*4], 05a827999h
SHA1F0 edx, esi, eax, ebx, ecx, SHA1W[12*4], 05a827999h
SHA1F0 ecx, edx, esi, eax, ebx, SHA1W[13*4], 05a827999h
SHA1F0 ebx, ecx, edx, esi, eax, SHA1W[14*4], 05a827999h
SHA1F0 eax, ebx, ecx, edx, esi, SHA1W[15*4], 05a827999h
SHA1F0 esi, eax, ebx, ecx, edx, SHA1W[16*4], 05a827999h
SHA1F0 edx, esi, eax, ebx, ecx, SHA1W[17*4], 05a827999h
SHA1F0 ecx, edx, esi, eax, ebx, SHA1W[18*4], 05a827999h
SHA1F0 ebx, ecx, edx, esi, eax, SHA1W[19*4], 05a827999h
;========================================================
SHA1F1 eax, ebx, ecx, edx, esi, SHA1W[20*4], 06ed9eba1h
SHA1F1 esi, eax, ebx, ecx, edx, SHA1W[21*4], 06ed9eba1h
SHA1F1 edx, esi, eax, ebx, ecx, SHA1W[22*4], 06ed9eba1h
SHA1F1 ecx, edx, esi, eax, ebx, SHA1W[23*4], 06ed9eba1h
SHA1F1 ebx, ecx, edx, esi, eax, SHA1W[24*4], 06ed9eba1h
SHA1F1 eax, ebx, ecx, edx, esi, SHA1W[25*4], 06ed9eba1h
SHA1F1 esi, eax, ebx, ecx, edx, SHA1W[26*4], 06ed9eba1h
SHA1F1 edx, esi, eax, ebx, ecx, SHA1W[27*4], 06ed9eba1h
SHA1F1 ecx, edx, esi, eax, ebx, SHA1W[28*4], 06ed9eba1h
SHA1F1 ebx, ecx, edx, esi, eax, SHA1W[29*4], 06ed9eba1h
SHA1F1 eax, ebx, ecx, edx, esi, SHA1W[30*4], 06ed9eba1h
SHA1F1 esi, eax, ebx, ecx, edx, SHA1W[31*4], 06ed9eba1h
SHA1F1 edx, esi, eax, ebx, ecx, SHA1W[32*4], 06ed9eba1h
SHA1F1 ecx, edx, esi, eax, ebx, SHA1W[33*4], 06ed9eba1h
SHA1F1 ebx, ecx, edx, esi, eax, SHA1W[34*4], 06ed9eba1h
SHA1F1 eax, ebx, ecx, edx, esi, SHA1W[35*4], 06ed9eba1h
SHA1F1 esi, eax, ebx, ecx, edx, SHA1W[36*4], 06ed9eba1h
SHA1F1 edx, esi, eax, ebx, ecx, SHA1W[37*4], 06ed9eba1h
SHA1F1 ecx, edx, esi, eax, ebx, SHA1W[38*4], 06ed9eba1h
SHA1F1 ebx, ecx, edx, esi, eax, SHA1W[39*4], 06ed9eba1h
;========================================================
SHA1F2 eax, ebx, ecx, edx, esi, SHA1W[40*4], 08f1bbcdch
SHA1F2 esi, eax, ebx, ecx, edx, SHA1W[41*4], 08f1bbcdch
SHA1F2 edx, esi, eax, ebx, ecx, SHA1W[42*4], 08f1bbcdch
SHA1F2 ecx, edx, esi, eax, ebx, SHA1W[43*4], 08f1bbcdch
SHA1F2 ebx, ecx, edx, esi, eax, SHA1W[44*4], 08f1bbcdch
SHA1F2 eax, ebx, ecx, edx, esi, SHA1W[45*4], 08f1bbcdch
SHA1F2 esi, eax, ebx, ecx, edx, SHA1W[46*4], 08f1bbcdch
SHA1F2 edx, esi, eax, ebx, ecx, SHA1W[47*4], 08f1bbcdch
SHA1F2 ecx, edx, esi, eax, ebx, SHA1W[48*4], 08f1bbcdch
SHA1F2 ebx, ecx, edx, esi, eax, SHA1W[49*4], 08f1bbcdch
SHA1F2 eax, ebx, ecx, edx, esi, SHA1W[50*4], 08f1bbcdch
SHA1F2 esi, eax, ebx, ecx, edx, SHA1W[51*4], 08f1bbcdch
SHA1F2 edx, esi, eax, ebx, ecx, SHA1W[52*4], 08f1bbcdch
SHA1F2 ecx, edx, esi, eax, ebx, SHA1W[53*4], 08f1bbcdch
SHA1F2 ebx, ecx, edx, esi, eax, SHA1W[54*4], 08f1bbcdch
SHA1F2 eax, ebx, ecx, edx, esi, SHA1W[55*4], 08f1bbcdch
SHA1F2 esi, eax, ebx, ecx, edx, SHA1W[56*4], 08f1bbcdch
SHA1F2 edx, esi, eax, ebx, ecx, SHA1W[57*4], 08f1bbcdch
SHA1F2 ecx, edx, esi, eax, ebx, SHA1W[58*4], 08f1bbcdch
SHA1F2 ebx, ecx, edx, esi, eax, SHA1W[59*4], 08f1bbcdch
;========================================================
SHA1F3 eax, ebx, ecx, edx, esi, SHA1W[60*4], 0ca62c1d6h
SHA1F3 esi, eax, ebx, ecx, edx, SHA1W[61*4], 0ca62c1d6h
SHA1F3 edx, esi, eax, ebx, ecx, SHA1W[62*4], 0ca62c1d6h
SHA1F3 ecx, edx, esi, eax, ebx, SHA1W[63*4], 0ca62c1d6h
SHA1F3 ebx, ecx, edx, esi, eax, SHA1W[64*4], 0ca62c1d6h
SHA1F3 eax, ebx, ecx, edx, esi, SHA1W[65*4], 0ca62c1d6h
SHA1F3 esi, eax, ebx, ecx, edx, SHA1W[66*4], 0ca62c1d6h
SHA1F3 edx, esi, eax, ebx, ecx, SHA1W[67*4], 0ca62c1d6h
SHA1F3 ecx, edx, esi, eax, ebx, SHA1W[68*4], 0ca62c1d6h
SHA1F3 ebx, ecx, edx, esi, eax, SHA1W[69*4], 0ca62c1d6h
SHA1F3 eax, ebx, ecx, edx, esi, SHA1W[70*4], 0ca62c1d6h
SHA1F3 esi, eax, ebx, ecx, edx, SHA1W[71*4], 0ca62c1d6h
SHA1F3 edx, esi, eax, ebx, ecx, SHA1W[72*4], 0ca62c1d6h
SHA1F3 ecx, edx, esi, eax, ebx, SHA1W[73*4], 0ca62c1d6h
SHA1F3 ebx, ecx, edx, esi, eax, SHA1W[74*4], 0ca62c1d6h
SHA1F3 eax, ebx, ecx, edx, esi, SHA1W[75*4], 0ca62c1d6h
SHA1F3 esi, eax, ebx, ecx, edx, SHA1W[76*4], 0ca62c1d6h
SHA1F3 edx, esi, eax, ebx, ecx, SHA1W[77*4], 0ca62c1d6h
SHA1F3 ecx, edx, esi, eax, ebx, SHA1W[78*4], 0ca62c1d6h
SHA1F3 ebx, ecx, edx, esi, eax, SHA1W[79*4], 0ca62c1d6h
;========================================================
mov edi,offset SHA1Digest
add [edi+0*4],eax
add [edi+1*4],ebx
add [edi+2*4],ecx
add [edi+3*4],edx
add [edi+4*4],esi
add esp,SHA1locals
popad
ret
SHA1Transform endp
SHA1BURN macro
xor eax,eax
mov SHA1Index,eax
mov edi,Offset SHA1HashBuf
mov ecx,(sizeof SHA1HashBuf)/4
rep stosd
endm
align dword
SHA1Init proc uses edi
xor eax, eax
mov SHA1Len,eax
SHA1BURN
mov eax,offset SHA1Digest
mov dword ptr [eax+00],067452301h
mov dword ptr [eax+04],0efcdab89h
mov dword ptr [eax+08],098badcfeh
mov dword ptr [eax+12],010325476h
mov dword ptr [eax+16],0c3d2e1f0h
ret
SHA1Init endp
align dword
SHA1Update proc uses esi edi ebx lpBuffer:dword, dwBufLen:dword
mov ebx,dwBufLen
add SHA1Len,ebx
.while ebx
mov eax,SHA1Index
mov edx,64
sub edx,eax
.if edx <= ebx
lea edi, [SHA1HashBuf+eax]
mov esi, lpBuffer
mov ecx, edx
rep movsb
sub ebx, edx
add lpBuffer, edx
call SHA1Transform
SHA1BURN
.else
lea edi, [SHA1HashBuf+eax]
mov esi, lpBuffer
mov ecx, ebx
rep movsb
mov eax, SHA1Index
add eax, ebx
mov SHA1Index,eax
.break
.endif
.endw
ret
SHA1Update endp
align dword
SHA1Final proc uses esi edi
mov ecx, SHA1Index
mov byte ptr [SHA1HashBuf+ecx],80h
.if ecx >= 56
call SHA1Transform
SHA1BURN
.endif
mov eax,SHA1Len
xor edx,edx
shld edx,eax,3
shl eax,3
bswap edx; \
bswap eax; /
mov dword ptr [SHA1HashBuf+56],edx
mov dword ptr [SHA1HashBuf+60],eax
call SHA1Transform
mov eax,offset SHA1Digest
mov edx,[eax+0*4]
mov ecx,[eax+1*4]
mov esi,[eax+2*4]
mov edi,[eax+3*4]
bswap edx
bswap ecx
bswap edi
bswap esi
mov [eax+0*4],edx
mov [eax+1*4],ecx
mov [eax+2*4],esi
mov [eax+3*4],edi
mov edx,[eax+4*4]
bswap edx
mov [eax+4*4],edx
ret
SHA1Final endp
end
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|