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
0x08All 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.sha1 — Functionsha1(data)Veri kümesini sha1 algoritması kullanarak hash'leyin ve elde edilen özeti döndürün. Ayrıca bkz. SHA1_CTX.
sha1(io::IO)sha1 algoritmasını kullanarak io'dan veri hash'le.
SHA-2
SHA.sha224 — Functionsha224(data)Veri sha224 algoritması kullanarak veriyi hashleyin ve elde edilen digest'i döndürün. Ayrıca bkz. SHA2_224_CTX.
sha224(io::IO)sha224 algoritmasını kullanarak io'dan veri hash'le.
SHA.sha256 — Functionsha256(veri)Veriyi sha256 algoritması kullanarak hash'leyin ve elde edilen digest'i döndürün. Ayrıca bkz. SHA2_256_CTX.
sha256(io::IO)sha256 algoritmasını kullanarak io'dan veriyi hash'le.
SHA.sha384 — Functionsha384(data)Veri sha384 algoritmasını kullanarak veriyi hashleyin ve elde edilen digest'i döndürün. Ayrıca bkz. SHA2_384_CTX.
sha384(io::IO)sha384 algoritmasını kullanarak io'dan veriyi hash'le.
SHA.sha512 — Functionsha512(data)Veri sha512 algoritmasını kullanarak hash'leyin ve elde edilen digest'i döndürün. Ayrıca bkz. SHA2_512_CTX.
sha512(io::IO)sha512 algoritmasını kullanarak io'dan veriyi hash'le.
SHA.sha2_224 — Functionsha2_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.
sha2_224(io::IO)sha2_224 algoritmasını kullanarak io'dan veriyi hash'le.
SHA.sha2_256 — Functionsha2_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.
sha2_256(io::IO)sha2_256 algoritmasını kullanarak io'dan veriyi hash'le.
SHA.sha2_384 — Functionsha2_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.
sha2_384(io::IO)sha2_384 algoritmasını kullanarak io'dan veriyi hash'le.
SHA.sha2_512 — Functionsha2_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.
sha2_512(io::IO)sha2_512 algoritmasını kullanarak io'dan veriyi hash'le.
SHA-3
SHA.sha3_224 — Functionsha3_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.
sha3_224(io::IO)sha3_224 algoritmasını kullanarak io'dan veri hash'le.
SHA.sha3_256 — Functionsha3_256(data)Veri sha3_256 algoritmasını kullanarak veriyi hashleyin ve elde edilen özeti döndürün. Ayrıca bkz. SHA3_256_CTX.
sha3_256(io::IO)sha3_256 algoritmasını kullanarak io'dan veriyi hash'le.
SHA.sha3_384 — Functionsha3_384(veri)Veriyi sha3_384 algoritmasıyla hash'leyin ve elde edilen digest'i döndürün. Ayrıca bkz. SHA3_384_CTX.
sha3_384(io::IO)sha3_384 algoritmasını kullanarak io'dan veriyi hash'le.
SHA.sha3_512 — Functionsha3_512(veri)Veriyi sha3_512 algoritması kullanarak hash'leyin ve elde edilen digest'i döndürün. Ayrıca bkz. SHA3_512_CTX.
sha3_512(io::IO)sha3_512 algoritmasını kullanarak io'dan veriyi hash'le.
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
0xc5Not 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! — Functionupdate!(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")SHA.digest! — Functiondigest!(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
[...]All SHA context types
SHA-1
SHA.SHA1_CTX — TypeSHA1_CTX()Boş bir SHA1 bağlamı oluşturur.
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.SHA224_CTX — TypeSHA2_224_CTX()Boş bir SHA2_224 bağlamı oluşturur.
SHA.SHA256_CTX — TypeSHA2_256_CTX()Boş bir SHA2_256 bağlamı oluşturur.
SHA.SHA384_CTX — TypeSHA2_384()Boş bir SHA2_384 bağlamı oluşturun.
SHA.SHA512_CTX — TypeSHA2_512_CTX()Boş bir SHA2_512 bağlamı oluşturur.
SHA.SHA2_224_CTX — TypeSHA2_224_CTX()Boş bir SHA2_224 bağlamı oluşturur.
SHA.SHA2_256_CTX — TypeSHA2_256_CTX()Boş bir SHA2_256 bağlamı oluşturur.
SHA.SHA2_384_CTX — TypeSHA2_384()Boş bir SHA2_384 bağlamı oluşturun.
SHA.SHA2_512_CTX — TypeSHA2_512_CTX()Boş bir SHA2_512 bağlamı oluşturur.
SHA-3
SHA.SHA3_224_CTX — TypeSHA3_224_CTX()Boş bir SHA3_224 bağlamı oluşturun.
SHA.SHA3_256_CTX — TypeSHA3_256_CTX()Boş bir SHA3_256 bağlamı oluşturur.
SHA.SHA3_384_CTX — TypeSHA3_384_CTX()Boş bir SHA3_384 bağlamı oluşturur.
SHA.SHA3_512_CTX — TypeSHA3_512_CTX()Boş bir SHA3_512 bağlamı oluşturur.
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_CTX — TypeHMAC_CTX(ctx::CTX, key::Vector{UInt8}) where {CTX<:SHA_CTX}Boş bir HMAC_CTX bağlamı oluşturun.
SHA-1
SHA.hmac_sha1 — Functionhmac_sha1(anahtar, veri)Veriyi geçirilen anahtarı kullanarak sha1 algoritması ile hash'le. Ayrıca bkz. HMAC_CTX.
hmac_sha1(key, io::IO)Geçerli anahtarı kullanarak io'dan verileri sha1 algoritması ile hash'ler.
SHA-2
SHA.hmac_sha224 — Functionhmac_sha224(key, data)Verilen anahtarı kullanarak verileri sha224 algoritması ile hash'leyin. Ayrıca bkz. HMAC_CTX.
hmac_sha224(key, io::IO)Geçerli anahtarı kullanarak io'dan verileri sha224 algoritması ile hash'ler.
SHA.hmac_sha256 — Functionhmac_sha256(key, data)Verilen anahtarı kullanarak veriyi sha256 algoritması ile hash'leyin. Ayrıca bkz. HMAC_CTX.
hmac_sha256(key, io::IO)Geçerli anahtarı kullanarak io'dan verileri sha256 algoritması ile hash'ler.
SHA.hmac_sha384 — Functionhmac_sha384(key, data)Verilen anahtarı kullanarak verileri sha384 algoritması ile hash'ler. Ayrıca bkz. HMAC_CTX.
hmac_sha384(key, io::IO)Geçerli anahtarı kullanarak io'dan verileri sha384 algoritması ile hash'ler.
SHA.hmac_sha512 — Functionhmac_sha512(anahtar, veri)Veriyi geçirilen anahtarı kullanarak sha512 algoritması ile hash'le. Ayrıca HMAC_CTX bölümüne de bakın.
hmac_sha512(key, io::IO)Geçerli anahtarı kullanarak io'dan verileri sha512 algoritması ile hash'ler.
SHA.hmac_sha2_224 — Functionhmac_sha2_224(key, data)Veriyi geçirilen anahtarı kullanarak sha2_224 algoritması ile hash'leyin. Ayrıca bkz. HMAC_CTX.
hmac_sha2_224(key, io::IO)Geçerli anahtarı kullanarak io'dan verileri sha2_224 algoritması ile hash'ler.
SHA.hmac_sha2_256 — Functionhmac_sha2_256(anahtar, veri)Veriyi geçirilen anahtarı kullanarak sha2_256 algoritması ile hash'leyin. Ayrıca bkz. HMAC_CTX.
hmac_sha2_256(key, io::IO)Geçerli anahtarı kullanarak io'dan verileri sha2_256 algoritması ile hash'le.
SHA.hmac_sha2_384 — Functionhmac_sha2_384(anahtar, veri)Veriyi geçirilen anahtarı kullanarak sha2_384 algoritması ile hash'leyin. Ayrıca bkz. HMAC_CTX.
hmac_sha2_384(key, io::IO)Geçerli anahtarı kullanarak io'dan verileri sha2_384 algoritması ile hash'ler.
SHA.hmac_sha2_512 — Functionhmac_sha2_512(anahtar, veri)Geçilen anahtarı kullanarak veriyi sha2_512 algoritması ile hash'le. Ayrıca bkz. HMAC_CTX.
hmac_sha2_512(key, io::IO)Geçerli anahtarı kullanarak io'dan verileri sha2_512 algoritması ile hash'ler.
SHA-3
SHA.hmac_sha3_224 — Functionhmac_sha3_224(anahtar, veri)Veriyi geçirilen anahtarı kullanarak sha3_224 algoritması ile hash'leyin. Ayrıca bkz. HMAC_CTX.
hmac_sha3_224(key, io::IO)Geçerli anahtarı kullanarak io'dan verileri sha3_224 algoritması ile hash'ler.
SHA.hmac_sha3_256 — Functionhmac_sha3_256(anahtar, veri)Veriyi geçirilen anahtarı kullanarak sha3_256 algoritması ile hash'leyin. Ayrıca bkz. HMAC_CTX.
hmac_sha3_256(key, io::IO)Geçerli anahtarı kullanarak io'dan verileri sha3_256 algoritması ile hash'ler.
SHA.hmac_sha3_384 — Functionhmac_sha3_384(anahtar, veri)Veriyi geçirilen anahtarı kullanarak sha3_384 algoritması ile hash'leyin. Ayrıca bkz. HMAC_CTX.
hmac_sha3_384(key, io::IO)Geçerli anahtarı kullanarak io'dan verileri sha3_384 algoritması ile hash'ler.
SHA.hmac_sha3_512 — Functionhmac_sha3_512(key, data)Veriyi geçirilen anahtarı kullanarak sha3_512 algoritması ile hash'leyin. Ayrıca bkz. HMAC_CTX.
hmac_sha3_512(key, io::IO)Geçerli anahtarı kullanarak io'dan verileri sha3_512 algoritması ile hash'ler.