⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sha1.idel

📁 idel虚拟机源码
💻 IDEL
📖 第 1 页 / 共 2 页
字号:
def 3 0 sprintf-hex  { addr j x --    j if  addr  j 1 -  x 4 >>>  sprintf-hex  then     x 15 and  hex.addr + c@  addr j + c! } ;def 3 0 digest  { a u -- a u type 10 emit  a u }  SHA1-init SHA1-update SHA1-final  dump-H  H 20 wordcpy ;def 0 0 SHA1-init  0 hbits !  0 lbits !  H SHA1-IV 20 wordcpy ;def 2 0 SHA1-update  { pdata data-len --    lbits @  3 >>>  63 and    data-len 29 >>>  hbits +!    data-len 3 <<    { mlen low-bits --      low-bits lbits +!      lbits @  low-bits < if  1 hbits +!  then      64 mlen -  data-len  { x y -- x y u< if x else y then }      { use --        W mlen +  pdata  use  memcpy        pdata use +  data-len use -  mlen use +  SHA1-update-loop } } } ;def 3 0 SHA1-update-loop  { data data-len mlen --    mlen 64 = if      SHA1-transform      64 data-len { x y -- x y u< if x else y then }      { use --        W data use memcpy        data use +  data-len use -  use  SHA1-update-loop }    then } ;def 0 0 SHA1-final  lbits @  3 >>>  63 and  { mlen -- 0x80 W mlen + c!  mlen 1 + }  { mlen --    64 mlen -    { padding --      padding 8 < if        W mlen +  0  padding  memset        SHA1-transform        W  0  64 8 -  memset      else        W mlen +  0  padding 8 -  memset      then } }  hbits @  W 64 + 8 - !  lbits @  W 64 + 4 - !  SHA1-transform ;def 0 0 SHA1-transform  0 @  4 @  8 @  12 @  16 @  { A B C D E -- A 5 << A 27 >>> or C D xor B and D xor + E + 20 @ + 1518500249 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B and D xor + E + 24 @ + 1518500249 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B and D xor + E + 28 @ + 1518500249 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B and D xor + E + 32 @ + 1518500249 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B and D xor + E + 36 @ + 1518500249 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B and D xor + E + 40 @ + 1518500249 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B and D xor + E + 44 @ + 1518500249 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B and D xor + E + 48 @ + 1518500249 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B and D xor + E + 52 @ + 1518500249 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B and D xor + E + 56 @ + 1518500249 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B and D xor + E + 60 @ + 1518500249 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B and D xor + E + 64 @ + 1518500249 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B and D xor + E + 68 @ + 1518500249 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B and D xor + E + 72 @ + 1518500249 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B and D xor + E + 76 @ + 1518500249 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B and D xor + E + 80 @ + 1518500249 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B and D xor + E + 72 @ 52 @ xor 28 @ xor 20 @ xor { x -- x 1 << x 31 >>> or } { x -- x 20 !  x } + 1518500249 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B and D xor + E + 76 @ 56 @ xor 32 @ xor 24 @ xor { x -- x 1 << x 31 >>> or } { x -- x 24 !  x } + 1518500249 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B and D xor + E + 80 @ 60 @ xor 36 @ xor 28 @ xor { x -- x 1 << x 31 >>> or } { x -- x 28 !  x } + 1518500249 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B and D xor + E + 20 @ 64 @ xor 40 @ xor 32 @ xor { x -- x 1 << x 31 >>> or } { x -- x 32 !  x } + 1518500249 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B xor + E + 24 @ 68 @ xor 44 @ xor 36 @ xor { x -- x 1 << x 31 >>> or } { x -- x 36 !  x } + 1859775393 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B xor + E + 28 @ 72 @ xor 48 @ xor 40 @ xor { x -- x 1 << x 31 >>> or } { x -- x 40 !  x } + 1859775393 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B xor + E + 32 @ 76 @ xor 52 @ xor 44 @ xor { x -- x 1 << x 31 >>> or } { x -- x 44 !  x } + 1859775393 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B xor + E + 36 @ 80 @ xor 56 @ xor 48 @ xor { x -- x 1 << x 31 >>> or } { x -- x 48 !  x } + 1859775393 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B xor + E + 40 @ 20 @ xor 60 @ xor 52 @ xor { x -- x 1 << x 31 >>> or } { x -- x 52 !  x } + 1859775393 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B xor + E + 44 @ 24 @ xor 64 @ xor 56 @ xor { x -- x 1 << x 31 >>> or } { x -- x 56 !  x } + 1859775393 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B xor + E + 48 @ 28 @ xor 68 @ xor 60 @ xor { x -- x 1 << x 31 >>> or } { x -- x 60 !  x } + 1859775393 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B xor + E + 52 @ 32 @ xor 72 @ xor 64 @ xor { x -- x 1 << x 31 >>> or } { x -- x 64 !  x } + 1859775393 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B xor + E + 56 @ 36 @ xor 76 @ xor 68 @ xor { x -- x 1 << x 31 >>> or } { x -- x 68 !  x } + 1859775393 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B xor + E + 60 @ 40 @ xor 80 @ xor 72 @ xor { x -- x 1 << x 31 >>> or } { x -- x 72 !  x } + 1859775393 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B xor + E + 64 @ 44 @ xor 20 @ xor 76 @ xor { x -- x 1 << x 31 >>> or } { x -- x 76 !  x } + 1859775393 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B xor + E + 68 @ 48 @ xor 24 @ xor 80 @ xor { x -- x 1 << x 31 >>> or } { x -- x 80 !  x } + 1859775393 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B xor + E + 72 @ 52 @ xor 28 @ xor 20 @ xor { x -- x 1 << x 31 >>> or } { x -- x 20 !  x } + 1859775393 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B xor + E + 76 @ 56 @ xor 32 @ xor 24 @ xor { x -- x 1 << x 31 >>> or } { x -- x 24 !  x } + 1859775393 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B xor + E + 80 @ 60 @ xor 36 @ xor 28 @ xor { x -- x 1 << x 31 >>> or } { x -- x 28 !  x } + 1859775393 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B xor + E + 20 @ 64 @ xor 40 @ xor 32 @ xor { x -- x 1 << x 31 >>> or } { x -- x 32 !  x } + 1859775393 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B xor + E + 24 @ 68 @ xor 44 @ xor 36 @ xor { x -- x 1 << x 31 >>> or } { x -- x 36 !  x } + 1859775393 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B xor + E + 28 @ 72 @ xor 48 @ xor 40 @ xor { x -- x 1 << x 31 >>> or } { x -- x 40 !  x } + 1859775393 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B xor + E + 32 @ 76 @ xor 52 @ xor 44 @ xor { x -- x 1 << x 31 >>> or } { x -- x 44 !  x } + 1859775393 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B xor + E + 36 @ 80 @ xor 56 @ xor 48 @ xor { x -- x 1 << x 31 >>> or } { x -- x 48 !  x } + 1859775393 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D or B and C D and or + E + 40 @ 20 @ xor 60 @ xor 52 @ xor { x -- x 1 << x 31 >>> or } { x -- x 52 !  x } + -1894007588 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D or B and C D and or + E + 44 @ 24 @ xor 64 @ xor 56 @ xor { x -- x 1 << x 31 >>> or } { x -- x 56 !  x } + -1894007588 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D or B and C D and or + E + 48 @ 28 @ xor 68 @ xor 60 @ xor { x -- x 1 << x 31 >>> or } { x -- x 60 !  x } + -1894007588 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D or B and C D and or + E + 52 @ 32 @ xor 72 @ xor 64 @ xor { x -- x 1 << x 31 >>> or } { x -- x 64 !  x } + -1894007588 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D or B and C D and or + E + 56 @ 36 @ xor 76 @ xor 68 @ xor { x -- x 1 << x 31 >>> or } { x -- x 68 !  x } + -1894007588 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D or B and C D and or + E + 60 @ 40 @ xor 80 @ xor 72 @ xor { x -- x 1 << x 31 >>> or } { x -- x 72 !  x } + -1894007588 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D or B and C D and or + E + 64 @ 44 @ xor 20 @ xor 76 @ xor { x -- x 1 << x 31 >>> or } { x -- x 76 !  x } + -1894007588 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D or B and C D and or + E + 68 @ 48 @ xor 24 @ xor 80 @ xor { x -- x 1 << x 31 >>> or } { x -- x 80 !  x } + -1894007588 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D or B and C D and or + E + 72 @ 52 @ xor 28 @ xor 20 @ xor { x -- x 1 << x 31 >>> or } { x -- x 20 !  x } + -1894007588 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D or B and C D and or + E + 76 @ 56 @ xor 32 @ xor 24 @ xor { x -- x 1 << x 31 >>> or } { x -- x 24 !  x } + -1894007588 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D or B and C D and or + E + 80 @ 60 @ xor 36 @ xor 28 @ xor { x -- x 1 << x 31 >>> or } { x -- x 28 !  x } + -1894007588 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D or B and C D and or + E + 20 @ 64 @ xor 40 @ xor 32 @ xor { x -- x 1 << x 31 >>> or } { x -- x 32 !  x } + -1894007588 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D or B and C D and or + E + 24 @ 68 @ xor 44 @ xor 36 @ xor { x -- x 1 << x 31 >>> or } { x -- x 36 !  x } + -1894007588 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D or B and C D and or + E + 28 @ 72 @ xor 48 @ xor 40 @ xor { x -- x 1 << x 31 >>> or } { x -- x 40 !  x } + -1894007588 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D or B and C D and or + E + 32 @ 76 @ xor 52 @ xor 44 @ xor { x -- x 1 << x 31 >>> or } { x -- x 44 !  x } + -1894007588 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D or B and C D and or + E + 36 @ 80 @ xor 56 @ xor 48 @ xor { x -- x 1 << x 31 >>> or } { x -- x 48 !  x } + -1894007588 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D or B and C D and or + E + 40 @ 20 @ xor 60 @ xor 52 @ xor { x -- x 1 << x 31 >>> or } { x -- x 52 !  x } + -1894007588 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D or B and C D and or + E + 44 @ 24 @ xor 64 @ xor 56 @ xor { x -- x 1 << x 31 >>> or } { x -- x 56 !  x } + -1894007588 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D or B and C D and or + E + 48 @ 28 @ xor 68 @ xor 60 @ xor { x -- x 1 << x 31 >>> or } { x -- x 60 !  x } + -1894007588 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D or B and C D and or + E + 52 @ 32 @ xor 72 @ xor 64 @ xor { x -- x 1 << x 31 >>> or } { x -- x 64 !  x } + -1894007588 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B xor + E + 56 @ 36 @ xor 76 @ xor 68 @ xor { x -- x 1 << x 31 >>> or } { x -- x 68 !  x } + -899497514 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B xor + E + 60 @ 40 @ xor 80 @ xor 72 @ xor { x -- x 1 << x 31 >>> or } { x -- x 72 !  x } + -899497514 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B xor + E + 64 @ 44 @ xor 20 @ xor 76 @ xor { x -- x 1 << x 31 >>> or } { x -- x 76 !  x } + -899497514 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B xor + E + 68 @ 48 @ xor 24 @ xor 80 @ xor { x -- x 1 << x 31 >>> or } { x -- x 80 !  x } + -899497514 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B xor + E + 72 @ 52 @ xor 28 @ xor 20 @ xor { x -- x 1 << x 31 >>> or } { x -- x 20 !  x } + -899497514 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B xor + E + 76 @ 56 @ xor 32 @ xor 24 @ xor { x -- x 1 << x 31 >>> or } { x -- x 24 !  x } + -899497514 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B xor + E + 80 @ 60 @ xor 36 @ xor 28 @ xor { x -- x 1 << x 31 >>> or } { x -- x 28 !  x } + -899497514 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B xor + E + 20 @ 64 @ xor 40 @ xor 32 @ xor { x -- x 1 << x 31 >>> or } { x -- x 32 !  x } + -899497514 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B xor + E + 24 @ 68 @ xor 44 @ xor 36 @ xor { x -- x 1 << x 31 >>> or } { x -- x 36 !  x } + -899497514 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B xor + E + 28 @ 72 @ xor 48 @ xor 40 @ xor { x -- x 1 << x 31 >>> or } { x -- x 40 !  x } + -899497514 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B xor + E + 32 @ 76 @ xor 52 @ xor 44 @ xor { x -- x 1 << x 31 >>> or } { x -- x 44 !  x } + -899497514 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B xor + E + 36 @ 80 @ xor 56 @ xor 48 @ xor { x -- x 1 << x 31 >>> or } { x -- x 48 !  x } + -899497514 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B xor + E + 40 @ 20 @ xor 60 @ xor 52 @ xor { x -- x 1 << x 31 >>> or } { x -- x 52 !  x } + -899497514 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B xor + E + 44 @ 24 @ xor 64 @ xor 56 @ xor { x -- x 1 << x 31 >>> or } { x -- x 56 !  x } + -899497514 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B xor + E + 48 @ 28 @ xor 68 @ xor 60 @ xor { x -- x 1 << x 31 >>> or } { x -- x 60 !  x } + -899497514 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B xor + E + 52 @ 32 @ xor 72 @ xor 64 @ xor { x -- x 1 << x 31 >>> or } { x -- x 64 !  x } + -899497514 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B xor + E + 56 @ 36 @ xor 76 @ xor 68 @ xor { x -- x 1 << x 31 >>> or } { x -- x 68 !  x } + -899497514 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B xor + E + 60 @ 40 @ xor 80 @ xor 72 @ xor { x -- x 1 << x 31 >>> or } { x -- x 72 !  x } + -899497514 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B xor + E + 64 @ 44 @ xor 20 @ xor 76 @ xor { x -- x 1 << x 31 >>> or } { x -- x 76 !  x } + -899497514 +  A  B 30 << B 2 >>> or  C  D }  { A B C D E -- A 5 << A 27 >>> or C D xor B xor + E + 68 @ 48 @ xor 24 @ xor 80 @ xor { x -- x 1 << x 31 >>> or } { x -- x 80 !  x } + -899497514 +  A  B 30 << B 2 >>> or  C  D }   16 +!  12 +!  8 +!  4 +!  0 +! ;#include "../../benchmarks/dump.idel"#include "../../tests/udot.idel"#include "../../tests/type.idel"\ more stuffdef 0 0 dump-H    H 5 dump-loop  '\n' emit ;def 2 0 +! { a -- a @  +  a ! } ;def 3 0 memcpy  { dst src n --    dst src n    dst 3 and if      bytecpy    else src 3 and if      bytecpy    else n 3 and if      bytecpy    else      wordcpy    then then then } ;def 3 0 wordcpy  { dst src n --    n if      src @ dst !      dst 4 +  src 4 +  n 4 -  wordcpy    then } ;def 3 0 bytecpy  { dst src n --    n if      src c@ dst c!      dst 1 +  src 1 +  n 1 -  bytecpy    then } ;def 3 0 memset  { dst byte n --    n if      byte dst c!      dst 1 +  byte  n 1 -  memset    then } ;def 3 1 memcmp  { dst src n --    n if      src c@  dst c@ = if        dst 1 +  src 1 +  n 1 -  memcmp      else        -1      then    else      0    then } ;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -