Enter the Julia package manager by typing ] into your REPL. Then type:
(@v1.6) pkg> add SHAjulia>using SHA
julia>bytes2hex(sha256("test"))
"9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08"Each exported function (at the time of this writing, SHA-1, SHA-2 224, 256, 384 and 512, and SHA-3 224, 256, 384 and 512 functions are implemented) takes in either an Vector{UInt8}, a ByteString or an IO object. This makes it trivial to checksum a file:
shell> cat /tmp/test.txt
test
julia>using SHA
julia>open("/tmp/test.txt") do f
sha2_256(f)
end32-element Vector{UInt8}:0x9f0x860xd00x810x880x4c0x7d0x65⋮0x5d0x6c0x150xb00xf00x0a0x08Note the lack of a newline at the end of /tmp/text.txt. Julia automatically inserts a newline before the julia> prompt.
Due to the colloquial usage of sha256 to refer to sha2_256, convenience functions are provided, mapping shaxxx() function calls to sha2_xxx(). For SHA-3, no such colloquialisms exist and the user must use the full sha3_xxx() names.
shaxxx() takes AbstractString and array-like objects (NTuple and Vector) with elements of type UInt8.
Note that, at the time of this writing, the SHA3 code is not optimized, and as such is roughly an order of magnitude slower than SHA2. Pull requests are welcome.