diff options
author | Sybren A. St?vel <sybren@stuvel.eu> | 2011-07-23 11:01:15 +0200 |
---|---|---|
committer | Sybren A. St?vel <sybren@stuvel.eu> | 2011-07-23 11:01:15 +0200 |
commit | 399a1c285b8ef15750eb273bf14ca7c113148919 (patch) | |
tree | f36d23a50c4bf7592a6b9f1440aa3fe48a56635b /rsa | |
parent | 1599c8bd46c9118545637251d15532e8853216e5 (diff) | |
download | rsa-399a1c285b8ef15750eb273bf14ca7c113148919.tar.gz |
Improved random number generation
Diffstat (limited to 'rsa')
-rw-r--r-- | rsa/randnum.py | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/rsa/randnum.py b/rsa/randnum.py index bb8be15..7db6243 100644 --- a/rsa/randnum.py +++ b/rsa/randnum.py @@ -2,7 +2,6 @@ import math import os -import random from rsa import common, transform @@ -13,16 +12,18 @@ def read_random_int(nbits): resulting number can be stored in ``nbits`` bits. """ - randomdata = os.urandom(int(math.ceil(nbits / 8.0))) + randomdata = os.urandom(nbits // 8) return transform.bytes2int(randomdata) def randint(maxvalue): """Returns a random integer x with 1 <= x <= maxvalue""" - readbits = max(common.bit_size(maxvalue), 32) + bit_size = common.bit_size(maxvalue) + readbits = max(bit_size, 32) + mask = (1 << bit_size) - 1 while True: - value = read_random_int(readbits) + value = read_random_int(readbits) & mask if value <= maxvalue: return value |