mirror of
https://github.com/nodejs/node.git
synced 2025-05-16 08:52:55 +00:00

PR-URL: https://github.com/nodejs/node/pull/20190 Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Tiancheng "Timothy" Gu <timothygu99@gmail.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Michaël Zasso <targos@protonmail.com>
20 lines
692 B
JavaScript
20 lines
692 B
JavaScript
'use strict'
|
|
var crypto = require('crypto')
|
|
var MurmurHash3 = require('imurmurhash')
|
|
|
|
module.exports = function (uniq) {
|
|
if (uniq) {
|
|
var hash = new MurmurHash3(uniq)
|
|
return ('00000000' + hash.result().toString(16)).substr(-8)
|
|
} else {
|
|
// Called without a callback, because this interface should neither block
|
|
// nor error (by contrast with randomBytes which will throw an exception
|
|
// without enough entropy).
|
|
//
|
|
// However, due to a change in Node 0.10.27+, pseudoRandomBytes is now the
|
|
// same as randomBytes, and may in fact block in situations where
|
|
// insufficent entropy is available.
|
|
return crypto.pseudoRandomBytes(4).toString('hex')
|
|
}
|
|
}
|