```{index} single: sha1 (Digest::SHA) ``` ```{index} single: Digest::SHA::sha1 ``` ```{index} single: Digest::SHA::sha1_base64 ``` ```{index} single: Digest::SHA::sha1_hex ``` ```{index} single: Digest::SHA::sha224 ``` ```{index} single: Digest::SHA::sha224_base64 ``` ```{index} single: Digest::SHA::sha224_hex ``` ```{index} single: Digest::SHA::sha256 ``` ```{index} single: Digest::SHA::sha256_base64 ``` ```{index} single: Digest::SHA::sha256_hex ``` ```{index} single: Digest::SHA::sha384 ``` ```{index} single: Digest::SHA::sha384_base64 ``` ```{index} single: Digest::SHA::sha384_hex ``` ```{index} single: Digest::SHA::sha512 ``` ```{index} single: Digest::SHA::sha512224 ``` ```{index} single: Digest::SHA::sha512224_base64 ``` ```{index} single: Digest::SHA::sha512224_hex ``` ```{index} single: Digest::SHA::sha512256 ``` ```{index} single: Digest::SHA::sha512256_base64 ``` ```{index} single: Digest::SHA::sha512256_hex ``` ```{index} single: Digest::SHA::sha512_base64 ``` ```{index} single: Digest::SHA::sha512_hex ``` # sha1 Compute a SHA digest of the concatenated arguments in one call. Also available as `Digest::SHA::sha1_base64`, `Digest::SHA::sha1_hex`, `Digest::SHA::sha224`, `Digest::SHA::sha224_base64`, `Digest::SHA::sha224_hex`, `Digest::SHA::sha256`, `Digest::SHA::sha256_base64`, `Digest::SHA::sha256_hex`, `Digest::SHA::sha384`, `Digest::SHA::sha384_base64`, `Digest::SHA::sha384_hex`, `Digest::SHA::sha512`, `Digest::SHA::sha512224`, `Digest::SHA::sha512224_base64`, `Digest::SHA::sha512224_hex`, `Digest::SHA::sha512256`, `Digest::SHA::sha512256_base64`, `Digest::SHA::sha512256_hex`, `Digest::SHA::sha512_base64`, `Digest::SHA::sha512_hex`. There are 21 functional entry points: 7 algorithms crossed with 3 output encodings. The name you call selects both the algorithm and the encoding: the plain name returns the **raw binary** digest (a fixed-length byte string), `_hex` the **lowercase hex** digest, `_base64` the **unpadded Base64** digest. | Algorithm | Raw binary | Hex | Base64 | |-------------|-------------|-----------------|--------------------| | SHA-1 | `sha1` | `sha1_hex` | `sha1_base64` | | SHA-224 | `sha224` | `sha224_hex` | `sha224_base64` | | SHA-256 | `sha256` | `sha256_hex` | `sha256_base64` | | SHA-384 | `sha384` | `sha384_hex` | `sha384_base64` | | SHA-512 | `sha512` | `sha512_hex` | `sha512_base64` | | SHA-512/224 | `sha512224` | `sha512224_hex` | `sha512224_base64` | | SHA-512/256 | `sha512256` | `sha512256_hex` | `sha512256_base64` | All arguments are concatenated byte-wise before hashing, so `sha256_hex("foo", "bar")` is identical to `sha256_hex("foobar")`. ## Synopsis ```perl use Digest::SHA qw(sha256_hex sha512_base64); my $hex = sha256_hex($data); my $b64 = sha512_base64(@chunks); ``` ## What you get back A plain scalar. For the raw-binary variants it is a byte string of fixed length (20 bytes for SHA-1, 28 for SHA-224, 32 for SHA-256, 48 for SHA-384, 64 for SHA-512). For `_hex` variants it is twice that length. For `_base64` variants it is the unpadded Base64 encoding (no trailing `=` characters). ## Examples ```perl use Digest::SHA qw(sha256_hex); print sha256_hex("abc"); # e.g. ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad ``` ```perl use Digest::SHA qw(sha1_hex); my $digest = sha1_hex("The quick brown fox ", "jumps over the lazy dog"); # identical to sha1_hex("The quick brown fox jumps over the lazy dog") ``` ```perl use Digest::SHA qw(sha512_base64); my $tag = sha512_base64($payload); # 86-character unpadded Base64 string ``` ```perl use Digest::SHA qw(sha256); my $raw = sha256(""); # 32 raw bytes print length $raw; # 32 ``` ## Edge cases - No arguments: hashes the empty string. `sha256_hex()` returns the well-known `e3b0c442...` empty-input digest. - Wide characters (codepoint above `255`) croak with `Wide character in subroutine entry` - encode to UTF-8 first if you want to hash text above Latin-1. ## Differences from upstream Fully compatible with upstream `Digest::SHA` {{ upstream.Digest_SHA }}. ## See also - `hmac_sha256_hex` - keyed variant for message authentication. - `Digest::SHA->new(256)` - incremental interface for large or streamed input. - `sha256` - raw-binary counterpart of `sha256_hex`.