diff --git a/.gitignore b/.gitignore index 782b392..2afcf7e 100644 --- a/.gitignore +++ b/.gitignore @@ -6,5 +6,9 @@ sha-256.obj sha-256.dll sha-256.lib sha-256.exp +tmp_smoke_sha/* +tmp_verify_sha/* +*.h +*.tmp +*.c -sha-256.dll diff --git a/sha-256.asm b/sha-256.asm index a1e710a..ffb43c5 100644 --- a/sha-256.asm +++ b/sha-256.asm @@ -140,9 +140,9 @@ Sha256 proc CF_Addr:QWORD,CF_FullSize:QWORD,CF_CurrSize:QWORD,CF_digests:QWORD,C movdqu myXMMSAVE+128,XMM14 movdqu myXMMSAVE+144,XMM15 mov myRnSAVE,r12 - mov myRnSAVE+4,r13 - mov myRnSAVE+8,r14 - mov myRnSAVE+12,r15 + mov myRnSAVE+8,r13 + mov myRnSAVE+16,r14 + mov myRnSAVE+24,r15 ;если хэш по предложенному адресу = 0, запускаем Sha256Init mov rax,qword ptr [r9] add r9,8 @@ -190,6 +190,8 @@ Sha256 proc CF_Addr:QWORD,CF_FullSize:QWORD,CF_CurrSize:QWORD,CF_digests:QWORD,C mov lastblocksize,1 ;сообщаю, что произойдёт переполнение и блока будет 2 (1024 бита) endingofsegment1: ;━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ lea rcx,lastblock ;rcx - указатель ┃ + test rdx,rdx + jz end_endingofsegment2 endingofsegment2: ; ┃ mov bl,[rax] ; перебрасываю хвост в локальную область ┃ mov [rcx],bl ; оптимизировать!!! наверняка - жуткий тормоз!!! ┃ @@ -197,6 +199,7 @@ Sha256 proc CF_Addr:QWORD,CF_FullSize:QWORD,CF_CurrSize:QWORD,CF_digests:QWORD,C inc rcx ; ┃ dec rdx ; ┃ jnz endingofsegment2;━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + end_endingofsegment2: mov BYTE ptr [rcx],128 ;дописываю 1 и 7 бит mov edx,endingOfSegment inc rdx ;в rdx - длинна хвоста + 8 бит @@ -314,9 +317,10 @@ Sha256 proc CF_Addr:QWORD,CF_FullSize:QWORD,CF_CurrSize:QWORD,CF_digests:QWORD,C movdqu XMM14,myXMMSAVE+128 movdqu XMM15,myXMMSAVE+144 mov R12,myRnSAVE - mov R13,myRnSAVE+4 - mov R14,myRnSAVE+8 - mov R15,myRnSAVE+12 + mov R13,myRnSAVE+8 + mov R14,myRnSAVE+16 + mov R15,myRnSAVE+24 + xor eax,eax ; NULL (0) = success ret Sha256 Endp ;Инициализация хэш функции, ввод исходных значений @@ -6945,4 +6949,4 @@ CompCycle proc; Цикл сжатия. Вынес в отдельную проц or r12,r11 ;A=T1+T2 ret CompCycle Endp -end \ No newline at end of file +end diff --git a/sha-256.dll b/sha-256.dll index 44c7ea1..a4863bc 100644 Binary files a/sha-256.dll and b/sha-256.dll differ diff --git a/sha-256.exp b/sha-256.exp index 58339b1..a63972c 100644 Binary files a/sha-256.exp and b/sha-256.exp differ diff --git a/sha-256.lib b/sha-256.lib index bc54a5d..d66ca90 100644 Binary files a/sha-256.lib and b/sha-256.lib differ