in English

Генератор псевдослучайных чисел и потоковый шифр 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 - таблицы подстановки.

А ключевое расписание и всё прочее можно найти здесь