make-hash.js 682 B

123456789101112131415161718192021222324252627282930
  1. 'use strict'
  2. var intSize = 4
  3. var zeroBuffer = new Buffer(intSize)
  4. zeroBuffer.fill(0)
  5. var charSize = 8
  6. var hashSize = 16
  7. function toArray (buf) {
  8. if ((buf.length % intSize) !== 0) {
  9. var len = buf.length + (intSize - (buf.length % intSize))
  10. buf = Buffer.concat([buf, zeroBuffer], len)
  11. }
  12. var arr = new Array(buf.length >>> 2)
  13. for (var i = 0, j = 0; i < buf.length; i += intSize, j++) {
  14. arr[j] = buf.readInt32LE(i)
  15. }
  16. return arr
  17. }
  18. module.exports = function hash (buf, fn) {
  19. var arr = fn(toArray(buf), buf.length * charSize)
  20. buf = new Buffer(hashSize)
  21. for (var i = 0; i < arr.length; i++) {
  22. buf.writeInt32LE(arr[i], i << 2, true)
  23. }
  24. return buf
  25. }