Research
Security News
Quasar RAT Disguised as an npm Package for Detecting Vulnerabilities in Ethereum Smart Contracts
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
github.com/lithammer/go-jump-consistent-hash
Go implementation of the jump consistent hash algorithm[1] by John Lamping and Eric Veach.
[1] http://arxiv.org/pdf/1406.2294v1.pdf
import jump "github.com/lithammer/go-jump-consistent-hash"
func main() {
h := jump.Hash(256, 1024) // h = 520
}
Includes a helper function for using a string
as key instead of an uint64
. This requires a hasher that computes the string into a format accepted by Hash()
. Such a hasher that uses CRC-64 (ECMA) is also included for convenience.
h := jump.HashString("127.0.0.1", 8, jump.NewCRC64()) // h = 7
In reality though you probably want to use a Hasher
so you won't have to repeat the bucket size and which key hasher used. It also uses more convenient types, like int
instead of int32
.
hasher := jump.New(8, jump.NewCRC64())
h := hasher.Hash("127.0.0.1") // h = 7
If you want to use your own algorithm, you must implement the KeyHasher
interface, which is a subset of the hash.Hash64
interface available in the standard library.
Here's an example of a custom KeyHasher
that uses Google's FarmHash algorithm (the successor of CityHash) to compute the final key.
type FarmHash struct {
buf bytes.Buffer
}
func (f *FarmHash) Write(p []byte) (n int, err error) {
return f.buf.Write(p)
}
func (f *FarmHash) Reset() {
f.buf.Reset()
}
func (f *FarmHash) Sum64() uint64 {
// https://github.com/dgryski/go-farm
return farm.Hash64(f.buf.Bytes())
}
hasher := jump.New(8, &FarmHash{})
h := hasher.Hash("127.0.0.1") // h = 5
MIT
FAQs
Unknown package
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
Security News
Research
A supply chain attack on Rspack's npm packages injected cryptomining malware, potentially impacting thousands of developers.
Research
Security News
Socket researchers discovered a malware campaign on npm delivering the Skuld infostealer via typosquatted packages, exposing sensitive data.