Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

js-md5

emn178830.5kMIT0.8.3TypeScript support: included

A simple MD5 hash function for JavaScript supports UTF-8 encoding.

md5, hash, encryption, cryptography, HMAC

readme

js-md5

Build Status Coverage Status
NPM

A simple and fast MD5 hash function for JavaScript supports UTF-8 encoding.

Demo

MD5 Online
MD5 File Checksum Online

Download

Compress
Uncompress

Benchmark

jsPerf Benchmark
File Benchmark

Installation

You can also install js-md5 by using Bower.

bower install md5

For node.js, you can use this command to install:

npm install js-md5

Notice

buffer method is deprecated. This maybe confuse with Buffer in node.js. Please use arrayBuffer instead.

Usage

You could use like this:

md5('Message to hash');
var hash = md5.create();
hash.update('Message to hash');
hash.hex();

// HMAC
md5.hmac('key', 'Message to hash');

var hash = md5.hmac.create('key');
hash.update('Message to hash');
hash.hex();

Node.js

If you use node.js, you should require the module first:

var md5 = require('js-md5');

TypeScript

If you use TypeScript, you can import like this:

import { md5 } from 'js-md5';

RequireJS

It supports AMD:

require(['your/path/md5.js'], function(md5) {
// ...
});

See document

Example

md5(''); // d41d8cd98f00b204e9800998ecf8427e
md5('The quick brown fox jumps over the lazy dog'); // 9e107d9d372bb6826bd81d3542a419d6
md5('The quick brown fox jumps over the lazy dog.'); // e4d909c290d0fb1ca068ffaddf22cbd0

// It also supports UTF-8 encoding
md5('中文'); // a7bac2239fcdcb3a067903d8077c4a07

// It also supports byte `Array`, `Uint8Array`, `ArrayBuffer`
md5([]); // d41d8cd98f00b204e9800998ecf8427e
md5(new Uint8Array([])); // d41d8cd98f00b204e9800998ecf8427e

// Different output
md5(''); // d41d8cd98f00b204e9800998ecf8427e
md5.hex(''); // d41d8cd98f00b204e9800998ecf8427e
md5.array(''); // [212, 29, 140, 217, 143, 0, 178, 4, 233, 128, 9, 152, 236, 248, 66, 126]
md5.digest(''); // [212, 29, 140, 217, 143, 0, 178, 4, 233, 128, 9, 152, 236, 248, 66, 126]
md5.arrayBuffer(''); // ArrayBuffer
md5.buffer(''); // ArrayBuffer, deprecated, This maybe confuse with Buffer in node.js. Please use arrayBuffer instead.
md5.base64(''); // 1B2M2Y8AsgTpgAmY7PhCfg==

// HMAC
md5.hmac.hex('key', 'Message to hash');
md5.hmac.array('key', 'Message to hash');
// ...

License

The project is released under the MIT license.

Contact

The project's website is located at https://github.com/emn178/js-md5
Author: Chen, Yi-Cyuan (emn178@gmail.com)

changelog

Change Log

v0.8.3 / 2023-10-09

Fixed

  • package.json main property.

v0.8.2 / 2023-10-09

Remove

  • package.json module property.

v0.8.1 / 2023-10-09

Added

  • TypeScript base64 interfaces.
  • Disable webpack polyfill.

v0.8.0 / 2023-09-27

Added

  • TypeScript interfaces.
  • HMAC feature.

Fixed

  • deprecated new Buffer, replace with Buffer.from.
  • dependencies and security issues.
  • don't modify global Array and ArrayBuffer prototypes.
  • refactor: simplify formatMessage internal logic.

Changed

  • remove eval and use require directly.
  • throw error by Error oject.
  • throw error if update after finalize
  • use unsigned right shift.

v0.7.3 / 2017-12-18

Fixed

  • incorrect result when first bit is 1 of bytes. #18

v0.7.2 / 2017-10-31

Improved

  • performance of hBytes increment.

v0.7.1 / 2017-10-29

Fixed

  • incorrect result when file size >= 4G.

v0.7.0 / 2017-10-29

Fixed

  • incorrect result when file size >= 512M.

v0.6.1 / 2017-10-07

Fixed

  • ArrayBuffer.isView issue in IE10.

Improved

  • performance of input check.

v0.6.0 / 2017-07-28

Added

  • support base64 string output.

v0.5.0 / 2017-07-14

Added

  • support for web worker. #11

Changed

  • throw error if input type is incorrect.
  • prevent webpack to require dependencies.

v0.4.2 / 2017-01-18

Fixed

  • root is undefined in some special environment. #7

v0.4.1 / 2016-03-31

Removed

  • length detection in node.js.

    Deprecated

  • buffer and replace by arrayBuffer.

v0.4.0 / 2015-12-28

Added

  • support for update hash.
  • support for bytes array output.
  • support for ArrayBuffer output.
  • support for AMD.

v0.3.0 / 2015-03-07

Added

  • support byte Array, Uint8Array and ArrayBuffer input.

v0.2.2 / 2015-02-01

Fixed

  • bug when special length.

    Improve

  • performance for node.js.

v0.2.1 / 2015-01-13

Improve

  • performance.

v0.2.0 / 2015-01-12

Removed

  • ascii parameter.

    Improve

  • performance.

v0.1.4 / 2015-01-11

Improve

  • performance.

    Added

  • test cases.

v0.1.3 / 2015-01-05

Added

  • bower package.
  • travis.
  • coveralls.

    Improved

  • performance.

    Fixed

  • JSHint warnings.

v0.1.2 / 2014-07-27

Fixed

  • accents bug

v0.1.1 / 2014-01-05

Changed

  • license

v0.1.0 / 2014-01-04

Added

  • initial release