@@ -423,6 +423,33 @@ def test_bug_27706(self):
423423 ['0x1.b0580f98a7dbep-1' , '0x1.84129978f9c1ap-1' ,
424424 '0x1.aeaa51052e978p-2' , '0x1.092178fb945a6p-2' ])
425425
426+ def test_bug_31482 (self ):
427+ # Verify that version 1 seeds are unaffected by hash randomization
428+ # when the seeds are expressed as bytes rather than strings.
429+ # The hash(b) values listed are the Python2.7 hash() values
430+ # which were used for seeding.
431+
432+ self .gen .seed (b'nofar' , version = 1 ) # hash('nofar') == 5990528763808513177
433+ self .assertEqual ([self .gen .random ().hex () for i in range (4 )],
434+ ['0x1.8645314505ad7p-1' , '0x1.afb1f82e40a40p-5' ,
435+ '0x1.2a59d2285e971p-1' , '0x1.56977142a7880p-6' ])
436+
437+ self .gen .seed (b'rachel' , version = 1 ) # hash('rachel') == -9091735575445484789
438+ self .assertEqual ([self .gen .random ().hex () for i in range (4 )],
439+ ['0x1.0b294cc856fcdp-1' , '0x1.2ad22d79e77b8p-3' ,
440+ '0x1.3052b9c072678p-2' , '0x1.578f332106574p-3' ])
441+
442+ self .gen .seed (b'' , version = 1 ) # hash('') == 0
443+ self .assertEqual ([self .gen .random ().hex () for i in range (4 )],
444+ ['0x1.b0580f98a7dbep-1' , '0x1.84129978f9c1ap-1' ,
445+ '0x1.aeaa51052e978p-2' , '0x1.092178fb945a6p-2' ])
446+
447+ b = b'\x00 \x20 \x40 \x60 \x80 \xA0 \xC0 \xE0 \xF0 '
448+ self .gen .seed (b , version = 1 ) # hash(b) == 5015594239749365497
449+ self .assertEqual ([self .gen .random ().hex () for i in range (4 )],
450+ ['0x1.52c2fde444d23p-1' , '0x1.875174f0daea4p-2' ,
451+ '0x1.9e9b2c50e5cd2p-1' , '0x1.fa57768bd321cp-2' ])
452+
426453 def test_setstate_first_arg (self ):
427454 self .assertRaises (ValueError , self .gen .setstate , (1 , None , None ))
428455
0 commit comments