# perldoc > Digest

---
type: CommandReference
command: Digest
mode: perldoc
section: 
source: perldoc
---

## Quick Reference
- `$digest = Digest->new("MD5")` — Create a new MD5 digest object.
- `$ctx->add($data)` — Append data to the message.
- `$digest = $ctx->digest` — Get binary digest (resets state).
- `$hex = $ctx->hexdigest` — Get hex digest.
- `$b64 = $ctx->b64digest` — Get base64 digest (no padding).
- `$clone = $ctx->clone` — Copy digest state.
- `use Digest::MD5 qw(md5); $digest = md5($data);` — Functional interface.
- `$ctx->addfile($fh)` — Append file contents to digest.

## Name
Digest - Modules that calculate message digests

## Synopsis
perl
$md5  = Digest->new("MD5");
$sha1 = Digest->new("SHA-1");
$sha256 = Digest->new("SHA-256");
$sha384 = Digest->new("SHA-384");
$sha512 = Digest->new("SHA-512");

$hmac = Digest->HMAC_MD5($key);
## Options

**Constructor:**
- `Digest->new("ALGORITHM")` — Returns a new digest object. Loads the module on demand. Raises exception if algorithm not found.
- `Digest->XXX($arg, ...)` — Syntactic sugar for `Digest->new("XXX", $arg, ...)`.
- `Digest::XXX->new($arg, ...)` — Direct constructor call.

**Instance Methods:**
- `$ctx->clone` — Returns a copy of the digest state.
- `$ctx->reset` — Alias for `$ctx->new`; resets the state.
- `$ctx->add($data, ...)` — Appends string data to the message. Multiple arguments are concatenated. Returns `$ctx`.
- `$ctx->addfile($io_handle)` — Reads handle until EOF and appends content. Returns `$ctx`. Use binmode.
- `$ctx->add_bits($data, $nbits)` — Appends partial byte data. Two-argument form uses first `$nbits` bits from `$data`. One-argument form takes a bitstring of "1"/"0" chars.
- `$ctx->digest` — Returns binary digest and resets the object.
- `$ctx->hexdigest` — Returns digest as lowercase hex string.
- `$ctx->b64digest` — Returns base64 digest without trailing padding.
- `$ctx->base64_padded_digest` — Returns base64 digest with padding.

## See Also
- [Digest::Adler32](https://www.chedong.com/phpMan.php/perldoc/Digest%3A%3AAdler32/markdown)
- [Digest::CRC](https://www.chedong.com/phpMan.php/perldoc/Digest%3A%3ACRC/markdown)
- [Digest::Haval256](https://www.chedong.com/phpMan.php/perldoc/Digest%3A%3AHaval256/markdown)
- [Digest::HMAC](https://www.chedong.com/phpMan.php/perldoc/Digest%3A%3AHMAC/markdown)
- [Digest::MD2](https://www.chedong.com/phpMan.php/perldoc/Digest%3A%3AMD2/markdown)
- [Digest::MD4](https://www.chedong.com/phpMan.php/perldoc/Digest%3A%3AMD4/markdown)
- [Digest::MD5](https://www.chedong.com/phpMan.php/perldoc/Digest%3A%3AMD5/markdown)
- [Digest::SHA](https://www.chedong.com/phpMan.php/perldoc/Digest%3A%3ASHA/markdown)
- [Digest::SHA1](https://www.chedong.com/phpMan.php/perldoc/Digest%3A%3ASHA1/markdown)
- [Digest::SHA2](https://www.chedong.com/phpMan.php/perldoc/Digest%3A%3ASHA2/markdown)
- [Digest::Whirlpool](https://www.chedong.com/phpMan.php/perldoc/Digest%3A%3AWhirlpool/markdown)
- [Digest::base](https://www.chedong.com/phpMan.php/perldoc/Digest%3A%3Abase/markdown) (for subclassing)
- [MIME::Base64](https://www.chedong.com/phpMan.php/perldoc/MIME%3A%3ABase64/markdown)
- [Cryptographic hash function](http://en.wikipedia.org/wiki/Cryptographic_hash_function)