Thanq.
Here is the code snippet(tested with sample application):
unsigned char temprpl[4] = { '\0' };
unsigned __int32 Value = 3957804565;
CryptoPP::RandomPool vRandPool;
memset((CryptoPP::byte *)&temprpl, 0, 4);
memcpy((CryptoPP::byte *)&temprpl, (CryptoPP::byte *)&Value, 4);
cout << "VALUE=" << Value << endl;
vRandPool.Put( reinterpret_cast<unsigned char*>(&temprpl), sizeof(Value) ); /* For Crypto++ 5.4 */
// vRandPool.IncorporateEntropy( (const CryptoPP::byte *)&temprpl, 4 ); /* For Cryptopp850 */
CryptoPP::word32 t1 = vRandPool.GenerateWord32();
cout << "FIRST RAND=" << t1 << endl;
CryptoPP::word32 t2 = vRandPool.GenerateWord32();
cout << "SECOND RAND=" << t2 << endl;
CryptoPP::word32 t3 = vRandPool.GenerateWord32();
cout << "THIRD RAND=" << t3 << endl;
With Crypto++ 5.4 it always returns 'fixed RAND' values for specific 'Value' as follows:
VALUE=3957804565
FIRST RAND=123224688
SECOND RAND=3565820466
THIRD RAND=2141184933
VALUE=15201583
FIRST RAND=2446881748
SECOND RAND=653021931
THIRD RAND=31285341
VALUE=1947237586
FIRST RAND=4090363092
SECOND RAND=1687243401
THIRD RAND=1878929729
But, with Cryptopp850, it returns 'different RAND' values(and it is different for every run). This is causing issues after upgrading to Cryptopp850.
This change in behavior is observed only on Windows platform and it works perfectly fine on Linux.
Do you think it is a bug? Any workaround or other solution available to resolve this problem.