Ejemplo n.º 1
0
        /* Initialize RNG with some real entropy from some external source */
        public void Seed(int rawlen, sbyte[] raw)
        {         // initialise from at least 128 byte string of raw random entropy
            int i;

            sbyte[] digest;
            sbyte[] b  = new sbyte[4];
            HASH256 sh = new HASH256();

            pool_ptr = 0;
            for (i = 0; i < NK; i++)
            {
                ira[i] = 0;
            }
            if (rawlen > 0)
            {
                for (i = 0; i < rawlen; i++)
                {
                    sh.Process(raw[i]);
                }
                digest = sh.Hash();

                /* initialise PRNG from distilled randomness */

                for (i = 0; i < 8; i++)
                {
                    b[0] = digest[4 * i];
                    b[1] = digest[4 * i + 1];
                    b[2] = digest[4 * i + 2];
                    b[3] = digest[4 * i + 3];
                    SIRand(pack(b));
                }
            }
            fill_pool();
        }
Ejemplo n.º 2
0
        private void fill_pool()
        {
            HASH256 sh = new HASH256();

            for (int i = 0; i < 128; i++)
            {
                sh.Process(sbrand());
            }
            pool     = sh.Hash();
            pool_ptr = 0;
        }