On Thu, Jun 17, 2021 at 7:22 AM Jeffrey Walton <noloa...@gmail.com> wrote:
>
> 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.

OK, I had some time to do some digging. Here's what Crypto++ 5.4
prints out in hex:

$ ./test.exe
VALUE=3957804565
FIRST RAND=7584270
SECOND RAND=d48a1a32
THIRD RAND=7f9fe3a5

The OldRandomPool class provides an endian-swapped value. I'm not sure why.

To fix it, we checked in this change:
https://github.com/weidai11/cryptopp/commit/7101e9e73a66.

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/CAH8yC8njUw58yBCHK%3DiLHFJa%2Bgj3kVJeK8EP49%3DYprSj8kH0Cw%40mail.gmail.com.

Reply via email to