https://github.com/browserify/hash-base
abstract base class for hash-streams
https://github.com/browserify/hash-base
cipher crypto crypto-browserify hash javascript stream
Last synced: 9 months ago
JSON representation
abstract base class for hash-streams
- Host: GitHub
- URL: https://github.com/browserify/hash-base
- Owner: browserify
- License: mit
- Created: 2016-04-03T19:10:33.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2024-12-21T09:59:37.000Z (about 1 year ago)
- Last Synced: 2025-03-31T13:18:59.062Z (9 months ago)
- Topics: cipher, crypto, crypto-browserify, hash, javascript, stream
- Language: JavaScript
- Size: 47.9 KB
- Stars: 11
- Watchers: 3
- Forks: 10
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# hash-base
[](https://www.npmjs.org/package/hash-base)
[](https://travis-ci.org/crypto-browserify/hash-base)
[](https://david-dm.org/crypto-browserify/hash-base#info=dependencies)
[](https://github.com/feross/standard)
Abstract base class to inherit from if you want to create streams implementing the same API as node crypto [Hash][1] (for [Cipher][2] / [Decipher][3] check [crypto-browserify/cipher-base][4]).
## Example
```js
const HashBase = require('hash-base')
const inherits = require('inherits')
// our hash function is XOR sum of all bytes
function MyHash () {
HashBase.call(this, 1) // in bytes
this._sum = 0x00
}
inherits(MyHash, HashBase)
MyHash.prototype._update = function () {
for (let i = 0; i < this._block.length; ++i) this._sum ^= this._block[i]
}
MyHash.prototype._digest = function () {
return this._sum
}
const data = Buffer.from([ 0x00, 0x42, 0x01 ])
const hash = new MyHash().update(data).digest()
console.log(hash) // => 67
```
You also can check [source code](index.js) or [crypto-browserify/md5.js][5]
## LICENSE
MIT
[1]: https://nodejs.org/api/crypto.html#crypto_class_hash
[2]: https://nodejs.org/api/crypto.html#crypto_class_cipher
[3]: https://nodejs.org/api/crypto.html#crypto_class_decipher
[4]: https://github.com/crypto-browserify/cipher-base
[5]: https://github.com/crypto-browserify/md5.js