Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.forth > #18029

Re: SHA-512

From mhx@iae.nl (Marcel Hendrix)
Subject Re: SHA-512
Newsgroups comp.lang.forth
Message-ID <16921688918435@frunobulax.edu> (permalink)
Date 2012-12-15 19:11 +0200
References <c6d2ba2e-adaa-41cd-a9e2-3edb96cc988d@googlegroups.com>
Organization Wanadoo

Show all headers | View raw


jzakiya@gmail.com writes Re: SHA-512

> On Friday, December 14, 2012 3:52:10 PM UTC-5, Marcel Hendrix wrote:
[..]
> Correction about VFX vs SwiftForth times.

>VFX is about 10x faster than SwiftForth for "test3".
>The first times I ran SwiftForth it was only doing 100 iterations for test3
>while VFX was doing 1000. Doing 1000 iterations with SwiftForth is about 
>150+ seconds, but 16-17 secs with VFX.

> I assume you got your times with your PICK-less :-) version?

No, my timings are with your [debugged] original code for SHA-512 (64bit).
PICK is still in there. Note that SHA-512 is considered to be fundamentally
slower than SHA-256.

> Now Marcel, if you go look back in this thread I asked you to check to see 
> if the cell reversal words were working, so I did try to steer you there.  
> :-)

I apologize! You did show a corrected ( DECIMAL<->HEX ) bytes>< and invited
me to test it. I did apply the correction, but did NOT test it, probably 
because I was too excited about S" abc" being correctly hashed.

> To check out 'shafile' create text files with the reference phrase ('abc', 
> et al) and enter them into shafile.  Be sure to check the length of the text 
> file first and subtract off any control characters that are inserted in the 
> file so they don't get hashed too. That's why I put the 0 0 D- line in shafile 
> so I could test file hashing with the reference phrases. Usually you just need 
> to do a 1 0 D- for LF or CR, or 2 0 D- if both a CR|LF are inserted.

Well, ok. Unfortunately that limits the testing of SHAfile to the very short
length of the two known test strings. Looking at the implementation of SHAfile, 
many bugs *could* be in there for lengths > 128 bytes.

> I've just about finished converting SHA-512 to SHA-384, SHA-512/224 and SHA-512/256, 
> to round out the 64-bit family of hashes, and the same for SHA-224 for the 32-bit 
> hashes. When I finish I'll upload them to my 4Share site and let you know.

I have looked at my own (PICK-less) idea of SHA-512 again, and it couldn't work. 
However, I found a way to improve your algorithm (literalize H[x]). ATM  test3  
runs in 11.048 seconds on my 2.66 GHz i7 system. SHAfile needs 2.741 seconds 
to process 385,241,618 bytes (64.9.. 50 MB/s/GHz). Hopefully your fix of 15 PICK 
will create additional room for speedup.

I have appended the core of the new algorithm.

-marcel

-- 
0 VALUE =H       -- Pointer to addr of hash value H for each round
CREATE cbuffer $8000 CHARS ALLOT

: >cb       cbuffer CELLPLACE+  BL cbuffer CELLCHAR+ ;  ( c-addr u -- ) 
: InitMake  SHAsh TO =H  cbuffer 0!  S" : SHA512 ( -- )" >cb ; 
: EndMake   S" ;" >cb  cbuffer @+ EVALUATE ;  
: :=: 	    CREATE  ,   DOES> @ (H.) >cb ; 

$428a2f98d728ae22 :=: K0   $7137449123ef65cd :=: K1   $b5c0fbcfec4d3b2f :=: K2   $e9b5dba58189dbbc :=: K3
$3956c25bf348b538 :=: K4   $59f111f1b605d019 :=: K5   $923f82a4af194f9b :=: K6   $ab1c5ed5da6d8118 :=: K7
$d807aa98a3030242 :=: K8   $12835b0145706fbe :=: K9   $243185be4ee4b28c :=: K10  $550c7dc3d5ffb4e2 :=: K11
$72be5d74f27b896f :=: K12  $80deb1fe3b1696b1 :=: K13  $9bdc06a725c71235 :=: K14  $c19bf174cf692694 :=: K15
$e49b69c19ef14ad2 :=: K16  $efbe4786384f25e3 :=: K17  $0fc19dc68b8cd5b5 :=: K18  $240ca1cc77ac9c65 :=: K19
$2de92c6f592b0275 :=: K20  $4a7484aa6ea6e483 :=: K21  $5cb0a9dcbd41fbd4 :=: K22  $76f988da831153b5 :=: K23
$983e5152ee66dfab :=: K24  $a831c66d2db43210 :=: K25  $b00327c898fb213f :=: K26  $bf597fc7beef0ee4 :=: K27
$c6e00bf33da88fc2 :=: K28  $d5a79147930aa725 :=: K29  $06ca6351e003826f :=: K30  $142929670a0e6e70 :=: K31
$27b70a8546d22ffc :=: K32  $2e1b21385c26c926 :=: K33  $4d2c6dfc5ac42aed :=: K34  $53380d139d95b3df :=: K35
$650a73548baf63de :=: K36  $766a0abb3c77b2a8 :=: K37  $81c2c92e47edaee6 :=: K38  $92722c851482353b :=: K39
$a2bfe8a14cf10364 :=: K40  $a81a664bbc423001 :=: K41  $c24b8b70d0f89791 :=: K42  $c76c51a30654be30 :=: K43
$d192e819d6ef5218 :=: K44  $d69906245565a910 :=: K45  $f40e35855771202a :=: K46  $106aa07032bbd1b8 :=: K47
$19a4c116b8d2d0c8 :=: K48  $1e376c085141ab53 :=: K49  $2748774cdf8eeb99 :=: K50  $34b0bcb5e19b48a8 :=: K51
$391c0cb3c5c95a63 :=: K52  $4ed8aa4ae3418acb :=: K53  $5b9cca4f7763e373 :=: K54  $682e6ff3d6b2b8a3 :=: K55
$748f82ee5defb2fc :=: K56  $78a5636f43172f60 :=: K57  $84c87814a1f0ab72 :=: K58  $8cc702081a6439ec :=: K59
$90befffa23631e28 :=: K60  $a4506cebde82bde9 :=: K61  $bef9a3f7b2c67915 :=: K62  $c67178f2e372532b :=: K63
$ca273eceea26619c :=: K64  $d186b8c721c0c207 :=: K65  $eada7dd6cde0eb1e :=: K66  $f57d4f7fee6ed178 :=: K67
$06f067aa72176fba :=: K68  $0a637dc5a2c898a6 :=: K69  $113f9804bef90dae :=: K70  $1b710b35131c471b :=: K71
$28db77f523047d84 :=: K72  $32caab7b40c72493 :=: K73  $3c9ebe0a15c9bebc :=: K74  $431d67c49c100d4c :=: K75
$4cc5d4becb3e42b6 :=: K76  $597f299cfc657e2a :=: K77  $5fcb6fab3ad6faec :=: K78  $6c44198c4a475817 :=: K79

: H[H]  =H             (H.) >cb ;  -- Return H addr
: H[G]  =H  1 CELLS  + (H.) >cb ;  -- Return G addr
: H[F]  =H  2 CELLS  + (H.) >cb ;  -- Return F addr
: H[E]  =H  3 CELLS  + (H.) >cb ;  -- Return E addr
: H[D]  =H  4 CELLS  + (H.) >cb ;  -- Return D addr
: H[C]  =H  5 CELLS  + (H.) >cb ;  -- Return C addr
: H[B]  =H  6 CELLS  + (H.) >cb ;  -- Return B addr
: H[A]  =H  7 CELLS  + (H.) >cb ;  -- Return A addr

: SHAinit ( -- )  \ Load initial hash values H0 - H7
	$6a09e667f3bcc908 ( H0)  $bb67ae8584caa73b ( H1)
	$3c6ef372fe94f82b ( H2)  $a54ff53a5f1d36f1 ( H3)
	$510e527fade682d1 ( H4)  $9b05688c2b3e6c1f ( H5)
	$1f83d9abfb41bd6b ( H6)  $5be0cd19137e2179 ( H7)
	SHAsh  7 0 DO  TUCK  !  CELL+  LOOP  !		\ Put initial hash in SHAsh array
	SHAsh  SHAval  8 CELLS  CMOVE ;         	\ Put copy in SHAval array

: UpDateHash ( ab c -- )  \ Update hash values and load arrays with new values
	8 0 DO  DUP >R @  SWAP  DUP >R @  +  DUP        \ Compute updated hash subvalue
	  	R@ !  OVER !  CELL+  R> CELL+  R> CELL+ \ Store updated hash subvalue
	  LOOP  3DROP ; 				\ Clear stack when done

: sig0    DUP  DUP   1 ROR  SWAP   8 ROR  XOR  SWAP  7 RSHIFT  XOR ;  	( x -- n ) 
: sig1    DUP  DUP #19 ROR  SWAP #61 ROR  XOR  SWAP  6 RSHIFT  XOR ;  	( x -- n ) 
: Wi@     DUP @  TUCK ;	 						( [Wi] -- wi [Wi] wi ) 
: Wi      #15 PICK  #15 PICK  sig0 +  7 PICK +  2 PICK sig1 +  DUP ;  	( ..Wi --..Wi' Wi') 
: WiDROP  5 0 DO  4DROP  4DROP  4DROP  4DROP  LOOP ;  			( W0..W79 -- ) 

: Ch      H[F] S" 2@  OVER  AND  SWAP  INVERT" >cb  H[G]  S" @  AND  XOR" >cb ;  ( -- n ) 
: Maj     H[C] S" DUP >R  CELL+  2@  OVER  AND  SWAP  R@ @  AND XOR  R> 2@ AND  XOR" >cb ;  ( -- n ) 
: T1x     Ch  H[E] S" @  DUP >R  #14 ror  R@  #18 ror  XOR  R>  #41 ror  XOR  +" >cb  H[H] S" @ +" >cb ;  ( -- n ) 
: T2      Maj H[A] S" @  DUP >R  #28 ror  R@  #34 ror  XOR  R>  #39 ror  XOR  +" >cb ;  ( -- n ) 
: subrnd  S" DUP"  >cb  H[D] S" +!" >cb  T2 S" +" >cb  H[A] S" CELL+ !" >cb  CELL +TO =H ;  
: rndi[   S" Wi@"  >cb  T1x S" +" >cb ;  
: ]rndi   S" +"    >cb subrnd S" CELL+" >cb ;  
: rndn[   S" Wi"   >cb  T1x S" +" >cb ;    
: ]rndn   S" +"    >cb subrnd ;  
: ~rndi	  S" DROP" >cb ;  	
: ~rndn	  S" WiDROP  SHAsh SHAval" >cb  H[H]  S" UpDateHash" >cb ;  

InitMake ( generates SHA512 )
  rndi[ K0  ]rndi  rndi[ K1  ]rndi  rndi[ K2  ]rndi  rndi[ K3  ]rndi
  rndi[ K4  ]rndi  rndi[ K5  ]rndi  rndi[ K6  ]rndi  rndi[ K7  ]rndi
  rndi[ K8  ]rndi  rndi[ K9  ]rndi  rndi[ K10 ]rndi  rndi[ K11 ]rndi
  rndi[ K12 ]rndi  rndi[ K13 ]rndi  rndi[ K14 ]rndi  rndi[ K15 ]rndi ~rndi
  rndn[ K16 ]rndn  rndn[ K17 ]rndn  rndn[ K18 ]rndn  rndn[ K19 ]rndn 
  rndn[ K20 ]rndn  rndn[ K21 ]rndn  rndn[ K22 ]rndn  rndn[ K23 ]rndn  
  rndn[ K24 ]rndn  rndn[ K25 ]rndn  rndn[ K26 ]rndn  rndn[ K27 ]rndn  
  rndn[ K28 ]rndn  rndn[ K29 ]rndn  rndn[ K30 ]rndn  rndn[ K31 ]rndn  
  rndn[ K32 ]rndn  rndn[ K33 ]rndn  rndn[ K34 ]rndn  rndn[ K35 ]rndn  
  rndn[ K36 ]rndn  rndn[ K37 ]rndn  rndn[ K38 ]rndn  rndn[ K39 ]rndn  
  rndn[ K40 ]rndn  rndn[ K41 ]rndn  rndn[ K42 ]rndn  rndn[ K43 ]rndn  
  rndn[ K44 ]rndn  rndn[ K45 ]rndn  rndn[ K46 ]rndn  rndn[ K47 ]rndn  
  rndn[ K48 ]rndn  rndn[ K49 ]rndn  rndn[ K50 ]rndn  rndn[ K51 ]rndn  
  rndn[ K52 ]rndn  rndn[ K53 ]rndn  rndn[ K54 ]rndn  rndn[ K55 ]rndn  
  rndn[ K56 ]rndn  rndn[ K57 ]rndn  rndn[ K58 ]rndn  rndn[ K59 ]rndn  
  rndn[ K60 ]rndn  rndn[ K61 ]rndn  rndn[ K62 ]rndn  rndn[ K63 ]rndn  
  rndn[ K64 ]rndn  rndn[ K65 ]rndn  rndn[ K66 ]rndn  rndn[ K67 ]rndn  
  rndn[ K68 ]rndn  rndn[ K69 ]rndn  rndn[ K70 ]rndn  rndn[ K71 ]rndn  
  rndn[ K72 ]rndn  rndn[ K73 ]rndn  rndn[ K74 ]rndn  rndn[ K75 ]rndn  
  rndn[ K76 ]rndn  rndn[ K77 ]rndn  rndn[ K78 ]rndn  rndn[ K79 ]rndn ~rndn 
EndMake 

Back to comp.lang.forth | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

SHA-512 mhx@iae.nl (Marcel Hendrix) - 2012-12-02 23:48 +0200
  Re: SHA-512 jzakiya@gmail.com - 2012-12-07 14:47 -0800
    Re: SHA-512 Coos Haak <chforth@hccnet.nl> - 2012-12-08 00:49 +0100
      Re: SHA-512 jzakiya@gmail.com - 2012-12-07 16:54 -0800
        Re: SHA-512 Coos Haak <chforth@hccnet.nl> - 2012-12-08 18:21 +0100
      Re: SHA-512 jzakiya@gmail.com - 2012-12-08 18:36 -0800
        Re: SHA-512 mhx@iae.nl (Marcel Hendrix) - 2012-12-09 09:14 +0200
          Re: SHA-512 jzakiya@gmail.com - 2012-12-09 17:23 -0800
            Re: SHA-512 jzakiya@gmail.com - 2012-12-09 17:29 -0800
              Re: SHA-512 jzakiya@gmail.com - 2012-12-09 20:46 -0800
              Re: SHA-512 m.a.m.hendrix@tue.nl - 2012-12-10 03:53 -0800
                Re: SHA-512 jzakiya@gmail.com - 2012-12-10 13:05 -0800
                Re: SHA-512 mhx@iae.nl (Marcel Hendrix) - 2012-12-10 23:17 +0200
                Re: SHA-512 jzakiya@gmail.com - 2012-12-13 06:30 -0800
                Re: SHA-512 mhx@iae.nl (Marcel Hendrix) - 2012-12-13 21:33 +0200
                Re: SHA-512 jzakiya@gmail.com - 2012-12-13 19:38 -0800
                Re: SHA-512 mhx@iae.nl (Marcel Hendrix) - 2012-12-14 22:52 +0200
                Re: SHA-512 jzakiya@gmail.com - 2012-12-14 16:39 -0800
                Re: SHA-512 mhx@iae.nl (Marcel Hendrix) - 2012-12-15 19:11 +0200
                Re: SHA-512 mhx@iae.nl (Marcel Hendrix) - 2012-12-16 16:00 +0200
                Re: SHA-512 jzakiya@gmail.com - 2012-12-16 17:33 -0800
                Re: SHA-512 jzakiya@gmail.com - 2012-12-16 22:35 -0800
                Re: SHA-512 mhx@iae.nl (Marcel Hendrix) - 2012-12-17 10:14 +0200
                Re: SHA-512 mhx@iae.nl (Marcel Hendrix) - 2012-12-17 10:51 +0200
                Re: SHA-512 jzakiya@gmail.com - 2012-12-17 09:13 -0800
                Re: SHA-512 mhx@iae.nl (Marcel Hendrix) - 2012-12-17 22:24 +0200
                Re: SHA-512 jzakiya@gmail.com - 2013-01-15 20:38 -0800
                Re: SHA-512 jzakiya@gmail.com - 2013-01-15 20:54 -0800
                Re: SHA-512 Howerd <howerdo@yahoo.co.uk> - 2012-12-13 13:06 -0800
                Re: SHA-512 Howerd <howerdo@yahoo.co.uk> - 2012-12-13 13:03 -0800
    Re: SHA-512 mhx@iae.nl (Marcel Hendrix) - 2012-12-08 22:08 +0200

csiph-web