blob: c8f95fd8da37ec7767fa31ee12c61577cad05f76 [file] [log] [blame]
Alex Gaynor2a70f912014-02-06 09:47:07 -08001Random number generation
2========================
3
4When generating random data for use in cryptographic operations, such as an
5initialization vector for encryption in
6:class:`~cryptography.hazmat.primitives.ciphers.modes.CBC` mode, you do not
7want to use the standard :mod:`random` module APIs. This is because they do not
Alex Gaynorcb157162014-02-06 10:27:48 -08008provide a cryptographically secure random number generator, which can result in
9major security issues depending on the algorithms in use.
Alex Gaynor2a70f912014-02-06 09:47:07 -080010
11Therefore, it is our recommendation to always use your operating system's
12provided random number generator, which is available as ``os.urandom()``. For
13example, if you need 16 bytes of random data for an initialization vector, you
14can obtain them with:
15
16.. doctest::
17
18 >>> import os
19 >>> os.urandom(16)
20 '...'