HEX
Server: nginx/1.24.0
System: Linux nowruzgan 6.8.0-57-generic #59-Ubuntu SMP PREEMPT_DYNAMIC Sat Mar 15 17:40:59 UTC 2025 x86_64
User: babak (1000)
PHP: 8.3.6
Disabled: NONE
Upload Files
File: //var/dev/shahnamag/back-end/node_modules/sha.js/test/test.js
var crypto = require('crypto')
var tape = require('tape')
var Sha1 = require('../').sha1

var inputs = [
  ['', 'ascii'],
  ['abc', 'ascii'],
  ['123', 'ascii'],
  ['123456789abcdef123456789abcdef123456789abcdef123456789abcdef', 'ascii'],
  ['123456789abcdef123456789abcdef123456789abcdef123456789abc', 'ascii'],
  ['123456789abcdef123456789abcdef123456789abcdef123456789ab', 'ascii'],
  ['0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcde', 'ascii'],
  ['0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef', 'ascii'],
  ['foobarbaz', 'ascii']
]

tape("hash is the same as node's crypto", function (t) {
  inputs.forEach(function (v) {
    var a = new Sha1().update(v[0], v[1]).digest('hex')
    var e = crypto.createHash('sha1').update(v[0], v[1]).digest('hex')
    console.log(a, '==', e)
    t.equal(a, e)
  })

  t.end()
})

tape('call update multiple times', function (t) {
  inputs.forEach(function (v) {
    var hash = new Sha1()
    var _hash = crypto.createHash('sha1')

    for (var i = 0; i < v[0].length; i = (i + 1) * 2) {
      var s = v[0].substring(i, (i + 1) * 2)
      hash.update(s, v[1])
      _hash.update(s, v[1])
    }

    var a = hash.digest('hex')
    var e = _hash.digest('hex')
    console.log(a, '==', e)
    t.equal(a, e)
  })
  t.end()
})

tape('call update twice', function (t) {
  var _hash = crypto.createHash('sha1')
  var hash = new Sha1()

  _hash.update('foo', 'ascii')
  hash.update('foo', 'ascii')

  _hash.update('bar', 'ascii')
  hash.update('bar', 'ascii')

  _hash.update('baz', 'ascii')
  hash.update('baz', 'ascii')

  var a = hash.digest('hex')
  var e = _hash.digest('hex')

  t.equal(a, e)
  t.end()
})

tape('hex encoding', function (t) {
  inputs.forEach(function (v) {
    var hash = new Sha1()
    var _hash = crypto.createHash('sha1')

    for (var i = 0; i < v[0].length; i = (i + 1) * 2) {
      var s = v[0].substring(i, (i + 1) * 2)
      hash.update(Buffer.from(s, 'ascii').toString('hex'), 'hex')
      _hash.update(Buffer.from(s, 'ascii').toString('hex'), 'hex')
    }
    var a = hash.digest('hex')
    var e = _hash.digest('hex')

    console.log(a, '==', e)
    t.equal(a, e)
  })

  t.end()
})

tape('call digest for more than MAX_UINT32 bits of data', function (t) {
  var _hash = crypto.createHash('sha1')
  var hash = new Sha1()
  var bigData = Buffer.alloc(0x1ffffffff / 8)

  hash.update(bigData)
  _hash.update(bigData)

  var a = hash.digest('hex')
  var e = _hash.digest('hex')

  t.equal(a, e)
  t.end()
})