SHA

SHA モジュールの使い方は非常に簡単です:

julia> using SHA

julia> bytes2hex(sha256("test"))
"9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08"

執筆時点で実装されているのは SHA-1 と SHA-2 (SHA-224, SHA-256, SHA-384, SHA-512) と SHA-3 (SHA3-224, SHA3-256, SHA3-384, SHA3-512) です。エクスポートされる関数は Array{UInt8}, ByteString, IO オブジェクトのいずれかを受け取ります。このためファイルのチェックサムの計算が簡単に行えます:

shell> cat /tmp/test.txt
test
julia> using SHA

julia> open("/tmp/test.txt") do f
           sha2_256(f)
       end
32-element Array{UInt8,1}:
 0x9f
 0x86
 0xd0
 0x81
 0x88
 0x4c
 0x7d
 0x65
    
 0x5d
 0x6c
 0x15
 0xb0
 0xf0
 0x0a
 0x08

/tmp/text.txt の末尾に改行が無いことに注意してください。Julia は julia> プロンプトの前に改行を自動的に挿入します。

口語で sha2_256sha256 と呼ぶことがあるので、利便性のために sha2_xxx() には shaxxx() という別名が与えられます。SHA-3 にはそういった口語表現が存在しないので、sha3_xxx() という完全な名前が必要です。

shaxxx() が受け取るのは UInt8 型の要素を持つ配列風のオブジェクト (NTuple/Array) または AbstractString です。

執筆時点において SHA3 のコードは最適化されておらず、SHA2 と比べてほぼ一桁遅いことに注意してください。