Hello,
Ralf proposed:
> > > #define ARCFOUR_BLOCKBITS 8
we have a random number generator, which gives us a sequence of 8-bit
integers. So, in a sense, we are working with 8-bit blocks.
But I see no reason why the other constants should contain the substring
"BLOCK".
On Fri, Oct 14, 2005 at 04:01:23PM +0200, Ralf Wildenhues wrote:
> Come to think of it, I'd probably call the first one LOGSZ
> (or LOGSIZE, FWIW), and the second SIZE.
The first one might be ARCFOUR_BLOCKBITS, but ARCFOUR_LOGSZ might be better,
to avoid misunderstanding. The second one should be ARCFOUR_SIZE.
Perhaps:
#define ARCFOUR_LOGSZ 8
#define ARCFOUR_SIZE (1 << ARCFOUR_LOGSZ)
/* Some compilers may not be able to optimize n % ARCFOUR_SIZE properly. */
#define ARCFOUR_MODULO(n) ((n) & (ARCFOUR_SIZE - 1))
You asked Simon to use constants, to make the code more general.
But there is actually no need that the SIZE of the permutation (sbox) be
a power of 2. It can be any positive number, in theory.
Yes, the size of the sbox determines the range of the numbers generated,
so if ARCFOUR_SIZE is not a power of 2, then the pseuso-random genrator
is not directly applicable for enciphering a binary data, but that's just
a detail.
So, in a sense, it would be better to use i % ARCFOUR_SIZE, instead of
i & ARCFOUR_MASK.
But, OTOH, we are not willing to compromise the performance, not even with
less capable compilers.
I think the macro ARCFOUR_MODULO proposed above might be a good solution.
Have a nice day,
Stepan
_______________________________________________
bug-gnulib mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/bug-gnulib