```{index} single: new; Digest::SHA function ``` ```{index} single: Digest::SHA::new; Perl function ``` # new Construct or reinitialise a `Digest::SHA` object. The primary object constructor. Works as both a class method (`Digest::SHA->new(256)`) and an instance method (`$sha->new(512)`), and accepts the algorithm in any of the shapes `Digest::SHA` recognises: an integer like `256`, a string like `"SHA-256"`, `"sha256"`, or `"512/224"`. When called without an algorithm argument it defaults to SHA-1. As an instance method, `new` reuses the existing object: supplying a new algorithm resets state and switches to that algorithm; omitting it simply rewinds the state (same as `reset`). ## Synopsis ```perl my $sha = Digest::SHA->new(256); my $sha = Digest::SHA->new("SHA-512/256"); $sha->new; # rewind, keep algorithm $sha->new(384); # rewind, switch to SHA-384 ``` ## What you get back A blessed `Digest::SHA` object, or `undef` when the algorithm argument cannot be parsed as a supported algorithm. ## Examples ```perl my $sha = Digest::SHA->new("sha256"); $sha->add("The quick brown fox ", "jumps over the lazy dog"); print $sha->hexdigest; ## d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592 ``` ```perl my $sha = Digest::SHA->new(512); $sha->add_bits("01011010"); # hash exactly 8 bits ``` ```perl my $sha = Digest::SHA->new(256); $sha->add("first"); $sha->new(512); # rewind and switch $sha->add("second"); # now hashing with SHA-512 ``` ## Edge cases - No algorithm argument defaults to SHA-1. - An unparseable algorithm returns `undef`; check the return value before chaining `->add`. - Called on an existing object, `new` mutates that object in place and returns it — it does not allocate a second context. ## Differences from upstream Fully compatible with upstream `Digest::SHA` {{ upstream.Digest_SHA }}. ## See also - `reset` — explicit rewind, same semantics as the no-argument instance form. - `clone` — copy the current state into a fresh object. - `newSHA` — lower-level XS constructor taking an integer algorithm code.