CVS: crypto/Util number.py,1.7,1.8

"A.M. Kuchling" <[email protected]> Fri, 21 Mar 2003 06:16:38 -0800
Newsgroups gmane.comp.python.cryptography.cvs
Message-ID <[email protected]>
Update of /cvsroot/pycrypto/crypto/Util
In directory sc8-pr-cvs1:/tmp/cvs-serv11940

Modified Files:
	number.py 
Log Message:
Fix getRandomNumber() for values of N that aren't multiples of 8

Index: number.py
===================================================================
RCS file: /cvsroot/pycrypto/crypto/Util/number.py,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- number.py	28 Feb 2003 15:26:01 -0000	1.7
+++ number.py	21 Mar 2003 14:16:35 -0000	1.8
@@ -41,8 +41,12 @@
     Return an N-bit random number."""
 
     S = randfunc(N/8)
-    char = ord(randfunc(1)) >> (8-(N%8))
-    return bytes_to_long(chr(char) + S)
+    odd_bits = N % 8
+    if odd_bits != 0:
+        char = ord(randfunc(1)) >> (8-odd_bits)
+        char |= (1<<odd_bits)
+        S = chr(char) + S
+    return bytes_to_long(S)
 
 def GCD(x,y):
     """GCD(x:long, y:long): long



-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf