anchor.diff:                  Bytes
           end,
       {#{ type => crypto_cache,
  -        bits => ?CRYPTO_CACHE_BITS,
  +        bits => CacheBits,
           next => fun ?MODULE:rand_cache_plugin_next/1},
  -     [CacheSize|<<>>]}.
  +     {CacheBits, CacheSize, <<>>}}.
   
   rand_plugin_next(Seed) ->
       {bytes_to_integer(strong_rand_range(1 bsl 64)), Seed}.
  
positive.code:         uniform_n => fun ?MODULE:rand_plugin_uniform/2},
       no_seed};
  rand_seed_alg_s(crypto_cache) ->
      EnvCacheSize =
          application:get_env(
            crypto, rand_cache_size,
            ?CRYPTO_CACHE_BITS * 16), % Cache 16 * 8 words
      Bytes = (?CRYPTO_CACHE_BITS + 7) div 8,
      CacheSize =
          case ((EnvCacheSize + (Bytes - 1)) div Bytes) * Bytes of
              Sz when is_integer(Sz), Bytes =< Sz ->
  
negative.code: rand_seed_s() ->
      rand_seed_alg_s(?MODULE).
  
  rand_seed_alg(Alg) ->
      rand:seed(rand_seed_alg_s(Alg)).
  
  -define(CRYPTO_CACHE_BITS, 56).
  rand_seed_alg_s(?MODULE) ->
      {#{ type => ?MODULE,
          bits => 64,
  