DataFlex
DataFlex
Fortuna PRNG Generate Random Encoded
See more PRNG Examples
Demonstrates how to generate random bytes using the Fortuna PRNG. The random bytes are returned in an encoded string (using an encoding such as hex, base64, base58, etc.)Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoFortuna
String sStrEntropy
String sStrRandHex
String sStrRandBase64
String sStrRandBase58
String sTemp1
Boolean bTemp1
Move False To iSuccess
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
Move False To iSuccess
Get Create (RefClass(cComChilkatPrng)) To hoFortuna
If (Not(IsComObjectCreated(hoFortuna))) Begin
Send CreateComObject of hoFortuna
End
// Before beginning to generate random data,
// the PRNG (Pseudo Random Number Generator) should
// be seeded with real random data (also known as "entropy").
// Note: Accumulating real random data can be difficult
// and time-consuming to collect. It is for this reason
// that pseudorandom data (i.e. a PRNG) is used. The pseudorandom data generator
// is seeded with entropy. In addition, new entropy can (and should)
// be periodically added as more pseudorandom data is generated.
// Get 32 bytes of system entropy. On Linux/Unix systems, this reads
// from /dev/random. On MS Windows systems, it uses the Crypto API's
// CryptGenRandom function.
Get ComGetEntropy Of hoFortuna 32 "hex" To sStrEntropy
Get ComLastMethodSuccess Of hoFortuna To bTemp1
If (bTemp1 <> True) Begin
Get ComLastErrorText Of hoFortuna To sTemp1
Showln sTemp1
Procedure_Return
End
// Seed the PRNG with this entropy:
Get ComAddEntropy Of hoFortuna sStrEntropy "hex" To iSuccess
If (iSuccess <> True) Begin
Get ComLastErrorText Of hoFortuna To sTemp1
Showln sTemp1
Procedure_Return
End
// Generate some random data:
Get ComGenRandom Of hoFortuna 16 "hex" To sStrRandHex
Get ComGenRandom Of hoFortuna 22 "base64" To sStrRandBase64
Get ComGenRandom Of hoFortuna 32 "base58" To sStrRandBase58
Showln "hex random bytes: " sStrRandHex
Showln "base64 random bytes: " sStrRandBase64
Showln "base58 random bytes: " sStrRandBase58
End_Procedure