Ad
Random Number Generation In Python
Is this a valid way to generate n
random bytes that are cryptographically random?
def cryptographically_secure_random_bytes(n):
return ''.join(chr(random.SystemRandom().randint(0,256)) for _ in range(n))
I know random.SystemRandom()
is the same as os.urandom()
, and I know that os.urandom()
is definitely a cryptographically secure way of generating random numbers.
However, the chr(random.SystemRandom().randint(0,256))
part throws me off a bit. Since chr()
doesn't support unicode, I'm assuming that this function is discarding some characters that would otherwise be produced by random.SystemRandom()
.
I'm not sure what to think of randint(0,256)
either, since that is the size of a byte.
Ad
Answer
Return a random integer N such that a <= N <= b. Alias for randrange(a, b+1).
So it is inclusive you could get something bigger than a byte.
Ad
source: stackoverflow.com
Related Questions
- → What are the pluses/minuses of different ways to configure GPIOs on the Beaglebone Black?
- → Django, code inside <script> tag doesn't work in a template
- → React - Django webpack config with dynamic 'output'
- → GAE Python app - Does URL matter for SEO?
- → Put a Rendered Django Template in Json along with some other items
- → session disappears when request is sent from fetch
- → Python Shopify API output formatted datetime string in django template
- → Can't turn off Javascript using Selenium
- → WebDriver click() vs JavaScript click()
- → Shopify app: adding a new shipping address via webhook
- → Shopify + Python library: how to create new shipping address
- → shopify python api: how do add new assets to published theme?
- → Access 'HTTP_X_SHOPIFY_SHOP_API_CALL_LIMIT' with Python Shopify Module
Ad