3 ms·
I can make Meow pass the LongNeighbors test by doubling the number of AES rounds on each pass. The original Meow algo: while(Len >= 64) { S0 =
by injinj 8y ago
I can make Meow pass the LongNeighbors test by doubling the number of AES rounds on each pass.
The original Meow algo:
while(Len >= 64)
{
S0 = Meow128_AESDEC_Mem(S0, Source);
S1 = Meow128_AESDEC_Mem(S1, Source + 16);
S2 = Meow128_AESDEC_Mem(S2, Source + 32);
S3 = Meow128_AESDEC_Mem(S3, Source + 48);
Len -= 64;
Source += 64;
}
The modified algo:
while(Len >= 64)
{
S0 = Meow128_AESDEC_Mem(S0, Source);
S0 = Meow128_AESDEC_Mem(S0, Source);
S1 = Meow128_AESDEC_Mem(S1, Source + 16);
S1 = Meow128_AESDEC_Mem(S1, Source + 16);
S2 = Meow128_AESDEC_Mem(S2, Source + 32);
S2 = Meow128_AESDEC_Mem(S2, Source + 32);
S3 = Meow128_AESDEC_Mem(S3, Source + 48);
S3 = Meow128_AESDEC_Mem(S3, Source + 48);
Len -= 64;
Source += 64;
}
(also changed the partial rounds, but this is not shown here)
This doesn't change it's performance that much, maybe 1 or 2 extra CPU cycles. My i9 CPU must be able to run these extra rounds in parallel... I do have hyperthreading disabled, if that matters.
Update:
Ah, it does cause the bulk speed test to be 50% of the original (48MiB vs 24Mib). The small key test only adds 1/2/3/4 extra AES instructions since they are manipulating 16 bytes at a time. It looks like this is only taking a cycle.