Research Article

CFA: A New Family of Hybrid CA-Based PRNGs

Algorithm 2

Pseudocode CFA-256.
Input: seed
Output: Random bits (256 bits)
 Begin
 Let j ← (-sizeOf(seed)-2) mod 256
 Let ruleSet ← {30, 90, 150, 30, 110, 30, 90, 150}
 Let keyAES ← ThreadedSeedGenerator(256)
 paddedSeed ← seed || 1||0j|| 1
s ← SHA3(paddedSeed, 256)
 s[0] ← s[256]
 s[257] ← s [1].
For it from 1 to 128
  For i from 1 to 256
  k ← i−1 modulo sizeOf(ruleSet)
   If ((k = = 0) || (k = = 3) || (k = 5)) then//30
    evolution[i] ← s[i−1] (s[i]+s[i+1])
   Else if ((k = = 1) || (k = = 6)) then
    evolution[i] ← s[i−1] s[i+1]
   Else if ((k = = 2) || (k = = 7)) then//150
    evolution[i] ← s[i−1] s[i] s[i+1]
   Else//110
    evolution[i] ← s[i−1] s[i+1] s[i−1]. s[i+1] s[i−1]. s[i]. s[i+1]
   End if
  End for
 End for
    generated_bits ← AES256 (evolution, keyAES, CTR)
End