diff --git a/sha-256.asm b/sha-256.asm index ec9ca38..fb17433 100644 --- a/sha-256.asm +++ b/sha-256.asm @@ -242,7 +242,7 @@ Sha256 proc CF_Addr:QWORD,CF_FullSize:QWORD,CF_CurrSize:QWORD,CF_digests:QWORD,C movdqu XMM1,XMMWORD PTR [rax+16] movdqu XMM2,XMMWORD PTR [rax+32] movdqu XMM3,XMMWORD PTR [rax+48] - call Wt + call Wt ; ret Sha256 Endp ;Инициализация хэш функции, ввод исходных значений @@ -1934,9 +1934,9 @@ Wt proc; вынес в отдельную процедуру заполнени rol eax,15 and eax,1fffffffh xor ecx,eax ; S0 - pshufd xmm113,xmm113,00111001b ;-2. + pshufd xmm13,xmm13,00111001b ;-2. xor rbx,rbx ;в ebx будет xor трёх вращений - movd eax,XMM113 + movd eax,XMM13 ;bswap eax ror eax,17 xor ebx,eax @@ -2073,10 +2073,12 @@ Wt proc; вынес в отдельную процедуру заполнени ;pshufd xmm15,xmm15,11100100b ;-0 (Rec) ;bswap edx movd xmm15,edx - ;W61---------начать с этого. Нужно заполнить XMM15------------------------------------------------------------------ + ;W61---------начать с этого. Нужно заполнить XMM15z\------------------------------------------------------------------ + sub rsp,16 + movdqu [rsp],xmm0; сохраняю в стеке XMM0, чтобы он заменил XMM15 xor rcx,rcx ;в ecx будет xor трёх вращений - pshufd xmm7,xmm7,01001110b ;-15. - movd eax,xmm7 + pshufd xmm11,xmm11,01001110b ;-15. + movd eax,xmm11 ;bswap eax ror eax,7 xor ecx,eax @@ -2085,9 +2087,9 @@ Wt proc; вынес в отдельную процедуру заполнени rol eax,15 and eax,1fffffffh xor ecx,eax ; S0 - pshufd xmm10,xmm10,00111001b ;-2. + pshufd xmm14,xmm14,00111001b ;-2. xor rbx,rbx ;в ebx будет xor трёх вращений - movd eax,XMM10 + movd eax,XMM14 ;bswap eax ror eax,17 xor ebx,eax @@ -2096,25 +2098,26 @@ Wt proc; вынес в отдельную процедуру заполнени rol eax,9 and eax,3fffffh xor ebx,eax ;S1 - pshufd xmm7,xmm7,10010011b ;-16. + pshufd xmm11,xmm11,10010011b ;-16. xor rdx,rdx - movd eax,xmm7 + movd eax,xmm11 ;bswap eax add edx,eax add edx,ecx - pshufd XMM9,XMM9,00111001b ;-7. - movd eax,XMM9 + pshufd XMM13,XMM13,00111001b ;-7. + movd eax,XMM13 ;bswap eax add edx,eax add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1 - pshufd xmm11,xmm11,00111001b ;-0 (Rec) + pshufd xmm15,xmm15,00111001b ;-0 (Rec) ;bswap edx - movd xmm15,edx - orpd xmm11,xmm15 + movd xmm0,edx + orpd xmm15,xmm0 + ;W62--------------------------------------------------------------------------- xor rcx,rcx ;в ecx будет xor трёх вращений - pshufd xmm7,xmm7,01001110b ;-15. - movd eax,xmm7 + pshufd xmm11,xmm11,01001110b ;-15. + movd eax,xmm11 ;bswap eax ror eax,7 xor ecx,eax @@ -2123,9 +2126,9 @@ Wt proc; вынес в отдельную процедуру заполнени rol eax,15 and eax,1fffffffh xor ecx,eax ; S0 - pshufd xmm11,xmm11,10010011b ;-2. + pshufd xmm15,xmm15,10010011b ;-2. xor rbx,rbx ;в ebx будет xor трёх вращений - movd eax,XMM11 + movd eax,XMM15 ;bswap eax ror eax,17 xor ebx,eax @@ -2134,25 +2137,25 @@ Wt proc; вынес в отдельную процедуру заполнени rol eax,9 and eax,3fffffh xor ebx,eax ;S1 - pshufd xmm7,xmm7,10010011b ;-16. + pshufd xmm11,xmm11,10010011b ;-16. xor rdx,rdx - movd eax,xmm7 + movd eax,xmm11 ;bswap eax add edx,eax add edx,ecx - pshufd XMM9,XMM9,00111001b ;-7. - movd eax,XMM9 + pshufd XMM13,XMM13,00111001b ;-7. + movd eax,XMM13 ;bswap eax add edx,eax add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1 - pshufd xmm11,xmm11,01001110b ;-0 (Rec) + pshufd xmm15,xmm15,01001110b ;-0 (Rec) ;bswap edx - movd xmm15,edx - orpd xmm11,xmm15 + movd xmm0,edx + orpd xmm15,xmm0 ;W63--------------------------------------------------------------------------- xor rcx,rcx ;в ecx будет xor трёх вращений - pshufd xmm8,xmm8,00111001b ;-15. - movd eax,xmm8 + pshufd xmm12,xmm12,00111001b ;-15. + movd eax,xmm12 ;bswap eax ror eax,7 xor ecx,eax @@ -2161,9 +2164,9 @@ Wt proc; вынес в отдельную процедуру заполнени rol eax,15 and eax,1fffffffh xor ecx,eax ; S0 - pshufd xmm11,xmm11,10010011b ;-2. + pshufd xmm15,xmm15,10010011b ;-2. xor rbx,rbx ;в ebx будет xor трёх вращений - movd eax,XMM11 + movd eax,XMM15 ;bswap eax ror eax,17 xor ebx,eax @@ -2172,21 +2175,23 @@ Wt proc; вынес в отдельную процедуру заполнени rol eax,9 and eax,3fffffh xor ebx,eax ;S1 - pshufd xmm7,xmm7,00111001b ;-16. + pshufd xmm11,xmm11,00111001b ;-16. xor rdx,rdx - movd eax,xmm7 + movd eax,xmm11 ;bswap eax add edx,eax add edx,ecx - pshufd XMM10,XMM10,00111001b ;-7. - movd eax,XMM10 + pshufd XMM14,XMM14,00111001b ;-7. + movd eax,XMM14 ;bswap eax add edx,eax add edx,ebx ;w[i]=w[i-16]+s0+w[i-7]+s1 - pshufd xmm11,xmm11,01001110b ;-0 (Rec) + pshufd xmm15,xmm15,01001110b ;-0 (Rec) ;bswap edx - movd xmm15,edx - orpd xmm11,xmm15 + movd XMM0,edx + orpd xmm15,xmm0 + movdqu XMM0,[rsp] + add rsp,16 ret Wt Endp end \ No newline at end of file diff --git a/sha-256.dll b/sha-256.dll index 96b7957..beef1b0 100644 Binary files a/sha-256.dll and b/sha-256.dll differ diff --git a/Книга1.2.xlsm b/Книга1.2.xlsm new file mode 100644 index 0000000..cb2e108 Binary files /dev/null and b/Книга1.2.xlsm differ