DataFlex
DataFlex
Generating Repeatable Random Data for Testing/Debugging
See more PRNG Examples
Demonstrates how to use the Fortuna PRNG to generate random-looking but repeatable non-random data for the purpose of testing and debugging.Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoFortuna
String sStrRandHex
String sStrRandBase64
String sStrRandBase58
Handle hoFortuna2
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
// Normally an application would seed the PRNG with entropy from
// some real random source. However, sometimes we want the same
// random sequence of bytes for testing and debugging purposes.
// This a reason why GetEntropy and AddEntropy are two different methods.
// An application could omit the call to GetEntropy, and instead pass
// non-random data to AddEntropy. For example:
// Seed the PRNG with non-entropy, so we get a repeatable sequence.
// Note: AddEntropy can be called any number of times.
Get ComAddEntropy Of hoFortuna "01020304" "hex" To iSuccess
Get ComAddEntropy Of hoFortuna "hello world" "ascii" To iSuccess
// 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
// Try it again with a different object to verify that the same results are obtained:
Get Create (RefClass(cComChilkatPrng)) To hoFortuna2
If (Not(IsComObjectCreated(hoFortuna2))) Begin
Send CreateComObject of hoFortuna2
End
Get ComAddEntropy Of hoFortuna2 "01020304" "hex" To iSuccess
Get ComAddEntropy Of hoFortuna2 "hello world" "ascii" To iSuccess
Get ComGenRandom Of hoFortuna2 16 "hex" To sStrRandHex
Get ComGenRandom Of hoFortuna2 22 "base64" To sStrRandBase64
Get ComGenRandom Of hoFortuna2 32 "base58" To sStrRandBase58
Showln "hex random bytes: " sStrRandHex
Showln "base64 random bytes: " sStrRandBase64
Showln "base58 random bytes: " sStrRandBase58
End_Procedure