CVS: crypto/Util number.py,1.11,1.12

"A.M. Kuchling" <[email protected]> Fri, 04 Apr 2003 10:04:46 -0800
Newsgroups gmane.comp.python.cryptography.cvs
Message-ID <[email protected]>
Update of /cvsroot/pycrypto/crypto/Util
In directory sc8-pr-cvs1:/tmp/cvs-serv18324

Modified Files:
	number.py 
Log Message:
Simplify generation of random N-bit numbers; ensure the high bit is set

Index: number.py
===================================================================
RCS file: /cvsroot/pycrypto/crypto/Util/number.py,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- number.py	4 Apr 2003 15:15:13 -0000	1.11
+++ number.py	4 Apr 2003 18:04:40 -0000	1.12
@@ -39,9 +39,11 @@
     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)
+    value = bytes_to_long(S)
+    value |= 2L ** (N-1)                # Ensure high bit is set
+    assert value >= 2L ** (N-1)
+    return value
 
 def GCD(x,y):
     """GCD(x:long, y:long): long



-------------------------------------------------------
This SF.net email is sponsored by: ValueWeb: 
Dedicated Hosting for just $79/mo with 500 GB of bandwidth! 
No other company gives more support or power for your dedicated server
http://click.atdmt.com/AFF/go/sdnxxaff00300020aff/direct/01/