On Wed, Jun 16, 2021 at 6:38 AM Vinay Kumar <wini.d.b...@gmail.com> wrote:
>
> 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.

For Crypto++ 8.5 (or anything greater than Crypto++ 5.5), you should
use OldRandPool instead of RandPool if you want the old behavior.
Actually OldRandPool was added at Crypto++ 6.0, so it is available for
Crypto++ 6.0 and above.

OldRandPool should work for you out of the box. We have a test for it
using data generated by Crypto++ 5.4. Also see
https://github.com/weidai11/cryptopp/blob/master/validat3.cpp#L633 .

If the OldRandPool is not returning correct results for you, then
copy/paste Crypto++ 5.4 RandPool into Crypto++ 8.5. Rename the class
to something like LegacyRandPool or FixedOldRandPool, and then use it
instead.

Also see the head notes at
https://www.cryptopp.com/docs/ref/randpool_8h.html, and the docs at
https://www.cryptopp.com/wiki/OldRandomPool.

Jeff

-- 
You received this message because you are subscribed to the Google Groups 
"Crypto++ Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to cryptopp-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/cryptopp-users/CAH8yC8m5Of65ZW9AeVcxQ2qEKoOzXPp9sTydFhjnaDLKhuoGQw%40mail.gmail.com.

Reply via email to