Implementation of the extendable-output functions (XOF's) SHAKE128 and SHAKE256 based on the SHA-3 implementation in the Julia Standard Library.
Install with the Julia package manager Pkg, just like any other registered Julia package:
pkg> add SHAKE # Press ']' to enter the Pkg REPL mode.or
julia> using Pkg; Pkg.add("SHAKE")Loading the package will export shake128_xof and shake256_xof as well as shake128 and shake256 and finally also SHAKE128RNG and SHAKE256RNG:
using SHAKEThe methods shake128_xof and shake256_xof may be used as infinite iterators:
for (i, b) in enumerate(shake256_xof(b"Hash me!"))
if iszero(b)
println("Found first null byte at position $i")
break
end
endThe random byte generators SHAKE128RNG and SHAKE256RNG subtype AbstractRNG and can be used as follows:
rng = SHAKE128RNG(b"Hash me!")
some_random_bytes = rand(rng, UInt8, 47)
more_random_bytes = rand(rng, UInt8, 11)For convenience, there also are shake128 and shake256, which compute an output of a specified, fixed length:
shake128(b"Hash me!", 32)