SHA

用法非常直接:

  1. julia> using SHA
  2. julia> bytes2hex(sha256("test"))
  3. "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08"

每个导出函数(SHA-1, SHA-2 224, 256, 384, 512, 以及 SHA-3 224, 256, 384, 512 函数在本文撰写时都已实现)都可以接受 Array{UInt8}, ByteStringIO 对象。这使计算文件校验和变得轻而易举:

  1. shell> cat /tmp/test.txt
  2. test
  3. julia> using SHA
  4. julia> open("/tmp/test.txt") do f
  5. sha2_256(f)
  6. end
  7. 32-element Array{UInt8,1}:
  8. 0x9f
  9. 0x86
  10. 0xd0
  11. 0x81
  12. 0x88
  13. 0x4c
  14. 0x7d
  15. 0x65
  16. 0x5d
  17. 0x6c
  18. 0x15
  19. 0xb0
  20. 0xf0
  21. 0x0a
  22. 0x08

注意 /tmp/text.txt 文件结尾缺少换行符。Julia 会自动在 julia> 提示符前插入换行符。

由于 sha256 通常指的是 sha2_256,因此提供了函数名简写,将 shaxxx() 函数调用映射到 sha2_xxx()。SHA-3 不存在这样的俗称,用户必须使用完整的函数名 sha3_xxx()

shaxxx() 接受 UInt8 类型的 AbstractString 和类数组对象(NTupleArray)。

请注意,在本文撰写时,SHA-3 代码还未进行优化,因此会比 SHA-2 慢大约一个数量级。