Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.forth > #18029
| 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 |
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 | Next — Previous in thread | Next in thread | Find similar | Unroll 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