vapor-docs/3.0/docs/crypto/random.md

1.1 KiB

Random

Crypto has two primary random number generators.

OSRandom generates random numbers by calling the operating system's random number generator.

URandom generates random numbers by reading from /dev/urandom.

Accessing random numbers

First, create an instance of the preferred random number generator:

let random = OSRandom()

or

let random = try URandom()

Reading integers

For every Swift integer a random number function exists.

let int8: Int8 = try random.makeInt8()
let uint8: UInt8 = try random.makeUInt8()
let int16: Int16 = try random.makeInt16()
let uint16: UInt16 = try random.makeUInt16()
let int32: Int32 = try random.makeInt32()
let uint32: UInt32 = try random.makeUInt32()
let int64: Int64 = try random.makeInt64()
let uint64: UInt64 = try random.makeUInt64()
let int: Int = try random.makeInt()
let uint: UInt = try random.makeUInt()

Reading random data

Random buffers of data are useful when, for example, generating tokens or other unique strings/blobs.

To generate a buffer of random data:

// generates 20 random bytes
let data: Data = random.data(count: 20)