summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSybren A. St?vel <sybren@stuvel.eu>2011-07-23 11:01:15 +0200
committerSybren A. St?vel <sybren@stuvel.eu>2011-07-23 11:01:15 +0200
commit399a1c285b8ef15750eb273bf14ca7c113148919 (patch)
treef36d23a50c4bf7592a6b9f1440aa3fe48a56635b
parent1599c8bd46c9118545637251d15532e8853216e5 (diff)
downloadrsa-399a1c285b8ef15750eb273bf14ca7c113148919.tar.gz
Improved random number generation
-rw-r--r--rsa/randnum.py9
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