SHA

SHA functions

Kullanım oldukça basittir:

julia> using SHA

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

Herhangi bir dışa aktarılan işlev (bu yazının yazıldığı sırada, SHA-1, SHA-2 224, 256, 384 ve 512, ve SHA-3 224, 256, 384 ve 512 işlevleri uygulanmıştır) ya bir AbstractVector{UInt8}, bir AbstractString ya da bir IO nesnesi alır. Bu, bir dosyanın kontrol toplamını almak için basit hale getirir:

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

All SHA functions

sha256'nın sha2_256'yı ifade etmek için gündelik kullanımından dolayı, shaxxx() fonksiyon çağrılarını sha2_xxx()'ye eşleyen yardımcı fonksiyonlar sağlanmaktadır. SHA-3 için böyle bir gündelik kullanım yoktur ve kullanıcı tam sha3_xxx() isimlerini kullanmak zorundadır.

shaxxx() AbstractString ve UInt8 türündeki elemanlara sahip dizi benzeri nesneleri (NTuple ve Array) alır.

SHA-1

SHA.sha1Function
sha1(data)

Veri kümesini sha1 algoritması kullanarak hash'leyin ve elde edilen özeti döndürün. Ayrıca bkz. SHA1_CTX.

source
sha1(io::IO)

sha1 algoritmasını kullanarak io'dan veri hash'le.

source

SHA-2

SHA.sha224Function
sha224(data)

Veri sha224 algoritması kullanarak veriyi hashleyin ve elde edilen digest'i döndürün. Ayrıca bkz. SHA2_224_CTX.

source
sha224(io::IO)

sha224 algoritmasını kullanarak io'dan veri hash'le.

source
SHA.sha256Function
sha256(veri)

Veriyi sha256 algoritması kullanarak hash'leyin ve elde edilen digest'i döndürün. Ayrıca bkz. SHA2_256_CTX.

source
sha256(io::IO)

sha256 algoritmasını kullanarak io'dan veriyi hash'le.

source
SHA.sha384Function
sha384(data)

Veri sha384 algoritmasını kullanarak veriyi hashleyin ve elde edilen digest'i döndürün. Ayrıca bkz. SHA2_384_CTX.

source
sha384(io::IO)

sha384 algoritmasını kullanarak io'dan veriyi hash'le.

source
SHA.sha512Function
sha512(data)

Veri sha512 algoritmasını kullanarak hash'leyin ve elde edilen digest'i döndürün. Ayrıca bkz. SHA2_512_CTX.

source
sha512(io::IO)

sha512 algoritmasını kullanarak io'dan veriyi hash'le.

source
SHA.sha2_224Function
sha2_224(data)

Veri sha2_224 algoritmasını kullanarak veriyi hashleyin ve elde edilen digest'i döndürün. Ayrıca SHA2_224_CTX bakın.

source
sha2_224(io::IO)

sha2_224 algoritmasını kullanarak io'dan veriyi hash'le.

source
SHA.sha2_256Function
sha2_256(data)

Veri sha2_256 algoritmasını kullanarak veriyi hashleyin ve elde edilen digest'i döndürün. Ayrıca bkz. SHA2_256_CTX.

source
sha2_256(io::IO)

sha2_256 algoritmasını kullanarak io'dan veriyi hash'le.

source
SHA.sha2_384Function
sha2_384(veri)

Veriyi sha2_384 algoritmasıyla hashleyin ve elde edilen digest'i döndürün. Ayrıca SHA2_384_CTX bölümüne de bakın.

source
sha2_384(io::IO)

sha2_384 algoritmasını kullanarak io'dan veriyi hash'le.

source
SHA.sha2_512Function
sha2_512(veri)

Veriyi sha2_512 algoritması kullanarak hash'leyin ve elde edilen digest'i döndürün. Ayrıca SHA2_512_CTX bölümüne de bakın.

source
sha2_512(io::IO)

sha2_512 algoritmasını kullanarak io'dan veriyi hash'le.

source

SHA-3

SHA.sha3_224Function
sha3_224(data)

Veri sha3_224 algoritmasını kullanarak veriyi hashleyin ve elde edilen digest'i döndürün. Ayrıca bkz. SHA3_224_CTX.

source
sha3_224(io::IO)

sha3_224 algoritmasını kullanarak io'dan veri hash'le.

source
SHA.sha3_256Function
sha3_256(data)

Veri sha3_256 algoritmasını kullanarak veriyi hashleyin ve elde edilen özeti döndürün. Ayrıca bkz. SHA3_256_CTX.

source
sha3_256(io::IO)

sha3_256 algoritmasını kullanarak io'dan veriyi hash'le.

source
SHA.sha3_384Function
sha3_384(veri)

Veriyi sha3_384 algoritmasıyla hash'leyin ve elde edilen digest'i döndürün. Ayrıca bkz. SHA3_384_CTX.

source
sha3_384(io::IO)

sha3_384 algoritmasını kullanarak io'dan veriyi hash'le.

source
SHA.sha3_512Function
sha3_512(veri)

Veriyi sha3_512 algoritması kullanarak hash'leyin ve elde edilen digest'i döndürün. Ayrıca bkz. SHA3_512_CTX.

source
sha3_512(io::IO)

sha3_512 algoritmasını kullanarak io'dan veriyi hash'le.

source

Working with context

Birden fazla öğeden bir hash oluşturmak için SHAX_XXX_CTX() türleri, update! ile güncellenen ve digest! ile sonlandırılan durumlu bir hash nesnesi oluşturmak için kullanılabilir.

julia> using SHA

julia> ctx = SHA2_256_CTX()
SHA2 256-bit hash state

julia> update!(ctx, b"some data")
0x0000000000000009

julia> update!(ctx, b"some more data")
0x0000000000000017

julia> digest!(ctx)
32-element Vector{UInt8}:
 0xbe
 0xcf
 0x23
 0xda
 0xaf
 0x02
 0xf7
 0xa3
 0x57
 0x92
    ⋮
 0x89
 0x4f
 0x59
 0xd8
 0xb3
 0xb4
 0x81
 0x8b
 0xc5

Not edin ki, bu yazının yazıldığı sırada, SHA3 kodu optimize edilmemiştir ve bu nedenle SHA2'den yaklaşık bir büyüklük sırası daha yavaştır.

SHA.update!Function
update!(context, data[, datalen])

SHA bağlamını verilerdeki baytlarla güncelleyin. Hash'i sonlandırmak için digest! ile de bakın.

Örnekler

julia> ctx = SHA1_CTX()
SHA1 hash durumu

julia> update!(ctx, b"hash'lanacak veri")
source
SHA.digest!Function
digest!(context)

SHA bağlamını sonlandırın ve hash'i bayt dizisi (Array{Uint8, 1}) olarak döndürün. digest! çağrıldıktan sonra bağlamı güncellemek hata verecektir.

Örnekler

julia> ctx = SHA1_CTX()
SHA1 hash durumu

julia> update!(ctx, b"hash'lanacak veri")

julia> digest!(ctx)
20-element Array{UInt8,1}:
 0x83
 0xe4
 ⋮
 0x89
 0xf5

julia> update!(ctx, b"daha fazla veri")
HATA: `digest!` çağrıldıktan sonra CTX'i güncelleyemezsiniz
[...]
source

All SHA context types

SHA-1

SHA-2

Kolaylık türleri de sağlanmıştır; burada SHAXXX_CTX, SHA2_XXX_CTX için bir tür takma adıdır.

SHA-3

HMAC functions

julia> using SHA

julia> key = collect(codeunits("key_string"))
10-element Vector{UInt8}:
 0x6b
 0x65
 0x79
 0x5f
 0x73
 0x74
 0x72
 0x69
 0x6e
 0x67

julia> bytes2hex(hmac_sha3_256(key, "test-message"))
"bc49a6f2aa29b27ee5ed1e944edd7f3d153e8a01535d98b5e24dac9a589a6248"

Birden fazla öğeden bir hash oluşturmak için, HMAC_CTX() türleri, update! ile güncellenen ve digest! ile sonlandırılan durumlu bir hash nesnesi oluşturmak için kullanılabilir.

julia> using SHA

julia> key = collect(codeunits("key_string"))
10-element Vector{UInt8}:
 0x6b
 0x65
 0x79
 0x5f
 0x73
 0x74
 0x72
 0x69
 0x6e
 0x67

julia> ctx = HMAC_CTX(SHA3_256_CTX(), key);

julia> update!(ctx, b"test-")
0x0000000000000000000000000000008d

julia> update!(ctx, b"message")
0x00000000000000000000000000000094

julia> bytes2hex(digest!(ctx))
"bc49a6f2aa29b27ee5ed1e944edd7f3d153e8a01535d98b5e24dac9a589a6248"

All HMAC functions

HMAC bağlam türü

SHA.HMAC_CTXType
HMAC_CTX(ctx::CTX, key::Vector{UInt8}) where {CTX<:SHA_CTX}

Boş bir HMAC_CTX bağlamı oluşturun.

source

SHA-1

SHA.hmac_sha1Function
hmac_sha1(anahtar, veri)

Veriyi geçirilen anahtarı kullanarak sha1 algoritması ile hash'le. Ayrıca bkz. HMAC_CTX.

source
hmac_sha1(key, io::IO)

Geçerli anahtarı kullanarak io'dan verileri sha1 algoritması ile hash'ler.

source

SHA-2

SHA.hmac_sha224Function
hmac_sha224(key, data)

Verilen anahtarı kullanarak verileri sha224 algoritması ile hash'leyin. Ayrıca bkz. HMAC_CTX.

source
hmac_sha224(key, io::IO)

Geçerli anahtarı kullanarak io'dan verileri sha224 algoritması ile hash'ler.

source
SHA.hmac_sha256Function
hmac_sha256(key, data)

Verilen anahtarı kullanarak veriyi sha256 algoritması ile hash'leyin. Ayrıca bkz. HMAC_CTX.

source
hmac_sha256(key, io::IO)

Geçerli anahtarı kullanarak io'dan verileri sha256 algoritması ile hash'ler.

source
SHA.hmac_sha384Function
hmac_sha384(key, data)

Verilen anahtarı kullanarak verileri sha384 algoritması ile hash'ler. Ayrıca bkz. HMAC_CTX.

source
hmac_sha384(key, io::IO)

Geçerli anahtarı kullanarak io'dan verileri sha384 algoritması ile hash'ler.

source
SHA.hmac_sha512Function
hmac_sha512(anahtar, veri)

Veriyi geçirilen anahtarı kullanarak sha512 algoritması ile hash'le. Ayrıca HMAC_CTX bölümüne de bakın.

source
hmac_sha512(key, io::IO)

Geçerli anahtarı kullanarak io'dan verileri sha512 algoritması ile hash'ler.

source
SHA.hmac_sha2_224Function
hmac_sha2_224(key, data)

Veriyi geçirilen anahtarı kullanarak sha2_224 algoritması ile hash'leyin. Ayrıca bkz. HMAC_CTX.

source
hmac_sha2_224(key, io::IO)

Geçerli anahtarı kullanarak io'dan verileri sha2_224 algoritması ile hash'ler.

source
SHA.hmac_sha2_256Function
hmac_sha2_256(anahtar, veri)

Veriyi geçirilen anahtarı kullanarak sha2_256 algoritması ile hash'leyin. Ayrıca bkz. HMAC_CTX.

source
hmac_sha2_256(key, io::IO)

Geçerli anahtarı kullanarak io'dan verileri sha2_256 algoritması ile hash'le.

source
SHA.hmac_sha2_384Function
hmac_sha2_384(anahtar, veri)

Veriyi geçirilen anahtarı kullanarak sha2_384 algoritması ile hash'leyin. Ayrıca bkz. HMAC_CTX.

source
hmac_sha2_384(key, io::IO)

Geçerli anahtarı kullanarak io'dan verileri sha2_384 algoritması ile hash'ler.

source
SHA.hmac_sha2_512Function
hmac_sha2_512(anahtar, veri)

Geçilen anahtarı kullanarak veriyi sha2_512 algoritması ile hash'le. Ayrıca bkz. HMAC_CTX.

source
hmac_sha2_512(key, io::IO)

Geçerli anahtarı kullanarak io'dan verileri sha2_512 algoritması ile hash'ler.

source

SHA-3

SHA.hmac_sha3_224Function
hmac_sha3_224(anahtar, veri)

Veriyi geçirilen anahtarı kullanarak sha3_224 algoritması ile hash'leyin. Ayrıca bkz. HMAC_CTX.

source
hmac_sha3_224(key, io::IO)

Geçerli anahtarı kullanarak io'dan verileri sha3_224 algoritması ile hash'ler.

source
SHA.hmac_sha3_256Function
hmac_sha3_256(anahtar, veri)

Veriyi geçirilen anahtarı kullanarak sha3_256 algoritması ile hash'leyin. Ayrıca bkz. HMAC_CTX.

source
hmac_sha3_256(key, io::IO)

Geçerli anahtarı kullanarak io'dan verileri sha3_256 algoritması ile hash'ler.

source
SHA.hmac_sha3_384Function
hmac_sha3_384(anahtar, veri)

Veriyi geçirilen anahtarı kullanarak sha3_384 algoritması ile hash'leyin. Ayrıca bkz. HMAC_CTX.

source
hmac_sha3_384(key, io::IO)

Geçerli anahtarı kullanarak io'dan verileri sha3_384 algoritması ile hash'ler.

source
SHA.hmac_sha3_512Function
hmac_sha3_512(key, data)

Veriyi geçirilen anahtarı kullanarak sha3_512 algoritması ile hash'leyin. Ayrıca bkz. HMAC_CTX.

source
hmac_sha3_512(key, io::IO)

Geçerli anahtarı kullanarak io'dan verileri sha3_512 algoritması ile hash'ler.

source