From: bg Date: Wed, 1 Sep 2010 11:56:00 +0000 (+0000) Subject: small tuning of cubehash X-Git-Url: https://git.cryptolib.org/?a=commitdiff_plain;h=591e3dc094fe411026c17f3b5a2f5f1a0500192c;p=avr-crypto-lib.git small tuning of cubehash --- diff --git a/cubehash/cubehash.c b/cubehash/cubehash.c index bb5852c..8b4a931 100644 --- a/cubehash/cubehash.c +++ b/cubehash/cubehash.c @@ -57,20 +57,21 @@ static void cubehash_round(cubehash_ctx_t* ctx){ ctx->a[i] = ctx->a[i+8]; ctx->a[i+8] = t; } - for(i=0; i<16; ++i){ - ctx->a[i] ^= ctx->a[i+16]; - } for(i=16; i<4*4+16; i+=4){ t = ctx->a[i]; - ctx->a[i] = ctx->a[i+2]; - ctx->a[i+2] = t; + ctx->a[i-16] ^= t; + ctx->a[i] = ctx->a[i+2] + ctx->a[i-16]; + ctx->a[i-16] = rotate11left(ctx->a[i-16]); + ctx->a[i-14] ^= ctx->a[i+2]; + ctx->a[i+2] = t + ctx->a[i-14]; + ctx->a[i-14] = rotate11left(ctx->a[i-14]); t = ctx->a[i+1]; - ctx->a[i+1] = ctx->a[i+3]; - ctx->a[i+3] = t; - } - for(i=0; i<16; ++i){ - ctx->a[i+16] += ctx->a[i]; - ctx->a[i] = rotate11left(ctx->a[i]); + ctx->a[i-15] ^= t; + ctx->a[i+1] = ctx->a[i+3] + ctx->a[i-15]; + ctx->a[i-15] = rotate11left(ctx->a[i-15]); + ctx->a[i-13] ^= ctx->a[i+3]; + ctx->a[i+3] = t + ctx->a[i-13]; + ctx->a[i-13] = rotate11left(ctx->a[i-13]); } for(i=0; i<4; ++i){ t = ctx->a[i]; @@ -82,12 +83,9 @@ static void cubehash_round(cubehash_ctx_t* ctx){ ctx->a[i] = ctx->a[i+4]; ctx->a[i+4] = t; } - for(i=0; i<16; ++i){ - ctx->a[i] ^= ctx->a[i+16]; - } for(i=16; i<16+16; i+=2){ - t = ctx->a[i]; - ctx->a[i] = ctx->a[i+1]; + ctx->a[i-16] ^= t = ctx->a[i]; + ctx->a[i-15] ^= ctx->a[i] = ctx->a[i+1]; ctx->a[i+1] = t; } }