123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- #include "crypto_stream_salsa20.h"
- #include "randombytes.h"
- #include <omp.h>
- #include <inttypes.h>
- #include <iostream>
- static int init = 0;
- static unsigned char key[crypto_stream_salsa20_KEYBYTES];
- static unsigned char nonce[crypto_stream_salsa20_NONCEBYTES] = {0};
- void fastrandombytes(unsigned char *r, unsigned long long rlen)
- {
- unsigned long long n=0;
- int i;
- if(!init)
- {
- randombytes(key, crypto_stream_salsa20_KEYBYTES);
- init = 1;
- }
-
- crypto_stream_salsa20(r,rlen,nonce,key);
-
- for(i=0;i<8;i++)
- n ^= ((unsigned long long)nonce[i]) << 8*i;
- n++;
- for(i=0;i<8;i++)
- nonce[i] = (n >> 8*i) & 0xff;
- }
|