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.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
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!
— 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.