Генератор псевдослучайных чисел и потоковый шифр AMPRNG
Криптографический ГПСЧ
... с хорошей статистикой
Реализовать элементарно:
u8 AMPRNG::PRNG(void) {
u8 t, output;
if (droplen == 0) droplen = 1;
do {
m = P[MG[(m + P[pos]) & 255]];
z = MG[P[(z + MG[pos]) & 255]];
output = P[P[(P[m] + 1) & 255]];
SWAP (P[pos], P[m]);
SWAP (MG[pos], MG[z]);
pos = (pos + 1) & 255;
droplen--;
} while (droplen != 0);
return output;
}
P, MG - таблицы подстановки.
А ключевое расписание и всё прочее можно найти здесь
|