Skip to content

Latest commit

History

182 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

SHA

Build Statuscodecov.io

Setup

Enter the Julia package manager by typing ] into your REPL. Then type:

(@v1.6) pkg> add SHA

Usage

julia>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}:0x9f0x860xd00x810x880x4c0x7d0x650x5d0x6c0x150xb00xf00x0a0x08

Note 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.

About

A performant, 100% native-julia SHA1, SHA2, and SHA3 implementation

Topics

Resources

Stars

52 stars

Watchers

7 watching

Forks

Releases

Packages

Used by

Contributors

Languages