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