digest.js
Overview
digest.js is a javascript library implementing cryptographic digest and HMAC algorithms.digest.js is designed for modern web browsers and requires the W3C Typed Arrays support. digest.js has been successfully tested with these web browsers:
- Chrome 11
- Firefox 4
- Safari 5.1
- IE 10
Supported algorithms:
- digest
- Message Authentication Code (MAC)
- Password-Based Key Derivation Function (PBKDF)
Installation
Node
npm install digest-js
and thenDigest = require('digest-js');
Browser
<script type="text/javascript" src="path/to/digest.min.js"></script>
Compilation
digest.js is using npm and grunt- Install Grunt
```shell
npm install -g grunt-cli
```
- Download dependencies
```shell
npm install
```
- Build the library
```shell
grunt
```
API Usage
Digest
- Initialize a digest object
```javascript
var dg = new Digest.SHA1();
```
- Update some data
```javascript
var data = new ArrayBuffer(3);
var buf = new Uint8Array(data);
buf[0] = 0x61; /* a */
buf[1] = 0x62; /* b */
buf[2] = 0x63; /* c */
dg.update(data);
```
- Finalize
```javascript
var result = dg.finalize();
```
It is also possible to digest some data at once:var dg = new Digest.SHA1();
var result = dg.digest("abc");
MAC
- Initialize a MAC object
```javascript
var mac = new Digest.HMAC_SHA1();
```
- Set the key
```javascript
mac.setKey("KeyInPlainText");
```
- Update some data
```javascript
var data = new ArrayBuffer(50);
var buf = new Uint8Array(data);
for (var i = 0; i < 50; i++) {
buf[i] = 0xdd;
}
mac.update(data);
```
- Finalize
```javascript
var result = mac.finalize();
```
PBKDF
- Initialize a PBKDF object with the iteration count
```javascript
var pbkdf = new Digest.PBKDF_HMAC_SHA1(2048);
```
- Derive key with the password, salt and desired key length (in bytes)
```javascript
var key = pbkdf.deriveKey("password", "salt", 24);
```
Misc
After thefinalize
, digest
or mac
methods have been called, the digest or mac object is automatically reset and can be reused.The
update
, digest
and mac
methods accept these data types:ArrayBuffer
String
(US-ASCII encoding)byte
(i.e. a number in the range 0-255)
The MAC
setKey
method accepts these data types:ArrayBuffer
String
(US-ASCII encoding)
The PBKDF
deriveKey
method accepts these data types for password and salt:ArrayBuffer
String
(US-ASCII encoding)