Random data
Purpose
This class produces unpredictable, cryptographically secure random numbers. Using a predictable random number generator, such as System.Random, is insecure.
These functions should be used to randomly generate encryption keys, nonces, salts, seeds, integers, strings, and passphrases.
Usage
Fill
Fills a span with random bytes.
SecureRandom.Fill(Span<byte> buffer)Exceptions
buffer has a length of 0.
GetInt32
Generates a random integer between 0 (inclusive) and the upper bound (exclusive).
SecureRandom.GetInt32(int upperBound)Exceptions
upperBound is less than MinUpperBound.
GetString
Generates a random string of a given length. A custom character set can be provided, but several character sets are available via constants.
Exceptions
length is less than MinStringLength or greater than MaxStringLength.
characterSet is null.
characterSet has a length of 0.
GetPassphrase
Generates a random passphrase using the EFF's long wordlist (minus hyphenated words).
wordCount is less than MinWordCount or greater than MaxWordCount.
FillDeterministic
Fills a span with deterministic bytes indistinguishable from random without knowing the seed.
This should be reserved for tests and custom constructions (e.g. an XOF).
Exceptions
buffer has a length of 0.
seed has a length not equal to SeedSize.
Constants
These are used for validation and/or save you defining your own constants.
Notes
If these functions are called inside a virtual machine (VM) which is snapshotted and restored, the same output may be produced.
Last updated