From fa75eebfddb5fc8aa10503a384974860be468791 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D1=81=20=D0=9C=D0=B8=D1=85=D0=B0=D0=B9?= =?UTF-8?q?=D0=BB=D0=BE=D0=B2=20WindowsDesktop?= Date: Mon, 16 Aug 2021 23:32:51 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=BE=D1=81=D1=87=D0=B8=D1=82=D0=B0?= =?UTF-8?q?=D0=BB=20Ma?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sha-256.asm | 51 ++++++++++++++++++++++++++++++++++++++--- sha-256.dll | Bin 9216 -> 9216 bytes На чём остановился.txt | 7 +++++- 3 files changed, 54 insertions(+), 4 deletions(-) diff --git a/sha-256.asm b/sha-256.asm index fb17433..8d07005 100644 --- a/sha-256.asm +++ b/sha-256.asm @@ -158,9 +158,13 @@ Sha256 proc CF_Addr:QWORD,CF_FullSize:QWORD,CF_CurrSize:QWORD,CF_digests:QWORD,C Inithash: ;Инициирую R12D-r15D (ХЭШ) mov rax,CF_digests mov r12,QWORD PTR [rax] + ;bswap r12 ;привожу в прямой порядок байт r12 mov r13,QWORD PTR [rax+8] + ;bswap r13 ;привожу в прямой порядок байт r13 mov r14,QWORD PTR [rax+16] - mov r15,QWORD PTR [rax+24] + ;bswap r14 ;привожу в прямой порядок байт r14 + mov r15,QWORD PTR [rax+24] + ;bswap r15 ;привожу в прямой порядок байт r15 ;Является ли массив последним? mov rax,CF_Last cmp rax,1 ;1-блок является последним @@ -188,7 +192,7 @@ Sha256 proc CF_Addr:QWORD,CF_FullSize:QWORD,CF_CurrSize:QWORD,CF_digests:QWORD,C lea rcx,lastblock ;rcx - указатель ┃ endingofsegment2: ; ┃ mov bl,[rax] ; перебрасываю хвост в локальную область ┃ - mov [rcx],bl ; ┃ + mov [rcx],bl ; оптимизировать!!! наверняка - жуткий тормоз!!! ┃ inc rax ; ┃ inc rcx ; ┃ dec rdx ; ┃ @@ -243,6 +247,8 @@ Sha256 proc CF_Addr:QWORD,CF_FullSize:QWORD,CF_CurrSize:QWORD,CF_digests:QWORD,C movdqu XMM2,XMMWORD PTR [rax+32] movdqu XMM3,XMMWORD PTR [rax+48] call Wt ; + ;Хэширую их + call CompCycle ret Sha256 Endp ;Инициализация хэш функции, ввод исходных значений @@ -2073,7 +2079,7 @@ Wt proc; вынес в отдельную процедуру заполнени ;pshufd xmm15,xmm15,11100100b ;-0 (Rec) ;bswap edx movd xmm15,edx - ;W61---------начать с этого. Нужно заполнить XMM15z\------------------------------------------------------------------ + ;W61--------------------------------------------------------------------------- sub rsp,16 movdqu [rsp],xmm0; сохраняю в стеке XMM0, чтобы он заменил XMM15 xor rcx,rcx ;в ecx будет xor трёх вращений @@ -2194,4 +2200,43 @@ Wt proc; вынес в отдельную процедуру заполнени add rsp,16 ret Wt Endp +CompCycle proc; Цикл сжатия. Вынес в отдельную процедуру + ; на входе: R12-R15 текущий хэш + ; XMM0 - XMM15 - Wt + ;Инициирую значениа a,b,c,d,e,f,g,h (копирую r12-r15 в r8-r11) + mov r8,r12 + mov r9,r13 + mov r10,r14 + mov r11,r15 + ;i=0 + rol r12,32 ;B=A + shl r13,32 ;D=C + rol r14,32 ;F=E + shl r15,32 ;H=G + mov eax,r12d + or r13,rax ;C=B + mov eax,r14d + or r15,rax ;G=F + mov rax,0ffffffffh + shl rax,32 + and r12,rax ;A=null + and r14,rax ;E=null + ;Ma + mov eax,r8d ;eax=A + mov rbx,r8 + shr rbx,32 ;ebx=B + mov ecx,r9d ;ecx=C + and eax,ebx ;A and B + and ebx,ecx ;B and C + mov edx,r8d ;edx=A + and edx,ecx ;A and C + or eax,ebx ;(A and B) or (B and C) + or edx,eax ;(A and C) or ((A and B) or (B and C)) + ;edx=Ma + + + + + ret +CompCycle Endp end \ No newline at end of file diff --git a/sha-256.dll b/sha-256.dll index beef1b01717cb9b7c601007cfd04c4828ecab40a..41f4e841939937ce2b72cc7c3ac2411e937461ea 100644 GIT binary patch delta 222 zcmZqhXz-YDgSqgO)W+MajEohVA2Mn(F`91XW{G2DG~ArU%Eic?$jHFp(c8M<-~a!U z6WBz=oq+rotzrxeCl7~ubieUvK61gMS5$QJQnoby2f7Rlp2rV3FfcIq^zyEoEX6*F zQF`-Q_I%NB-|i#6-DiEfulaW0_dIw+!Smo#AU+1f&lMcIkN9xEaO^(j!~Mf!$A2II z8o=Oj@PUGl@&g~`502djJiBjr9DEH_c~beX@=eF?3(6O{4|88QJUNi5W0IT*$P1Ij T