Looking in the paper, and in the implementation, the current Haraka v2 does not support seeding, however sometimes such a feature is very useful.
Thus, how could one adapt Haraka V2 to support seeding?
I'm making the difference between "seeding" and "keying" in the sense that, especially for non-cryptographic purposes like hash-tables, having "different enough" outputs (for the same inputs but different "seeds") is "good enough".
For example, looking at the AES-NI optimized implementation, the current aesenc is used with a fixed round key (where X is the lane, and R is the round):
sX = _mm_aesenc_si128(sX, rc[rci + R]);
Would XOR-ing the seed into the round key be enough, e.g. (kX is a lane of the key):
sX = _mm_aesenc_si128(sX, _mm_xor_si128(kX, rc[rci + X]));
Looking in the paper, and in the implementation, the current Haraka v2 does not support seeding, however sometimes such a feature is very useful.
Thus, how could one adapt Haraka V2 to support seeding?
I'm making the difference between "seeding" and "keying" in the sense that, especially for non-cryptographic purposes like hash-tables, having "different enough" outputs (for the same inputs but different "seeds") is "good enough".
For example, looking at the AES-NI optimized implementation, the current
aesencis used with a fixed round key (whereXis the lane, andRis the round):Would XOR-ing the seed into the round key be enough, e.g. (
kXis a lane of the key):