Questa è una parte del mio programma:
long long int expand(long long int part)
{
HCRYPTPROV hCryptProv = NULL;
LPCWSTR UserName = L"My";
BYTE add[8] = {0};
if(!(CryptAcquireContextW(&hCryptProv, UserName, 0, PROV_RSA_FULL, 0)))
{
CryptAcquireContextW(&hCryptProv, UserName, 0, PROV_RSA_FULL, CRYPT_NEWKEYSET);
}
CryptGenRandom(hCryptProv, 4, add);
part |= ((long long int)add[0] << 56) + ((long long int)add[1] << 48) + ((long long int)add[2] << 40) + ((long long int)add[3] << 32);
CryptReleaseContext(hCryptProv, 0);
return part;
}
int main()
{
long long int my = expand(100); //100 numero d'esempio
printf("%lli\n", my);
printf("%lli\n", expand(100)); //100 numero d'esempio
fflush(NULL);
getchar();
return 0;
}
Ci sono due problemi:
-le due chiamate alla printf producono stampe di valori differenti
-ad ogni esecuzione il programma stampa sempre gli stessi valori
Qualche suggerimento?