CSPRNG (Cryptographically Secure Pseudo-Random Number Generator) functions:
os.urandom(n)
: return a string of n random bytes.random.SystemRandom()
: provides random functions that usesos.urandom()
.
Note: Don't use random
module for PRNG for security purposes.
python -c "import os; print(os.urandom(20))"
python -c "import os, binascii; print(binascii.hexlify(os.urandom(20)))"
python -c "import random; print(random.SystemRandom().randint(0, 10 ** 10))"
python -c "import random, string; print(''.join(random.SystemRandom().choice(string.ascii_lowercase + string.ascii_uppercase + string.digits) for _ in range(20)))"
ruby -rsecurerandom -e "puts SecureRandom.random_bytes(20)"
ruby -rsecurerandom -e 'puts SecureRandom.hex(20)'
ruby -rsecurerandom -e "puts SecureRandom.random_bytes(20).unpack('H*')"
ruby -rsecurerandom -e 'puts SecureRandom.random_number(10 ** 10)'
ruby -e "range = [*'0'..'9',*'A'..'Z',*'a'..'z']; puts Array.new(20){ range.sample }.join"