31 lines
		
	
	
		
			625 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
		
			625 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict'
 | |
| var inherits = require('inherits')
 | |
| var MD5 = require('md5.js')
 | |
| var RIPEMD160 = require('ripemd160')
 | |
| var sha = require('sha.js')
 | |
| var Base = require('cipher-base')
 | |
| 
 | |
| function Hash (hash) {
 | |
|   Base.call(this, 'digest')
 | |
| 
 | |
|   this._hash = hash
 | |
| }
 | |
| 
 | |
| inherits(Hash, Base)
 | |
| 
 | |
| Hash.prototype._update = function (data) {
 | |
|   this._hash.update(data)
 | |
| }
 | |
| 
 | |
| Hash.prototype._final = function () {
 | |
|   return this._hash.digest()
 | |
| }
 | |
| 
 | |
| module.exports = function createHash (alg) {
 | |
|   alg = alg.toLowerCase()
 | |
|   if (alg === 'md5') return new MD5()
 | |
|   if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160()
 | |
| 
 | |
|   return new Hash(sha(alg))
 | |
| }
 |