Sync sha-256 & sha-512 multihash implementations
npm install sync-multihash-sha2Library provides alternative implementation of sha256 and sha512 hashing algorithms for those rare cases where implementation provided by [multiformats] may be prohibitively slow.
> âšī¸ In vast majority of use cases [multiformats] is better choice. In rare instances where [multiformats] does not meet your requirements you could use this library, but please make sure to consider the offered tradeoffs.
tl;dr: This implementation has sync API and is faster in browsers, but more dependencies implies more bytes over the wire and greater risk of supply chain attacks.
Library provides [SyncMultihashHasher][] implementation which provides sync API in browser and node environments. This is accomplished by leveraging [node:crypto][] in node and in [@noble/hashes][] in browsers.
- It can can be used in synchronous code paths
- It significantly faster in browsers
Since this library does not leverage [web crypto APIs][crypto.subtle.digest] there is more code to be send over the wire. More dependencies also increase risk of supply chain attacks.
[Web crypto APIs][crypto.subtle.digest] deliberately provide async APIs, which this library provides sync API. Furthermore, native implementation appears significantly slower, possibly because browsers rate-limit API calls.
Difference in choices may prove problematic in longer.
[multiformats]:https://github.com/multiformats/js-multiformats/
[SyncMultihashHasher]:https://github.com/multiformats/js-multiformats/blob/4a36fb7ee49edb4300267b90301ef0e4300cbc46/src/hashes/interface.ts#L60-L72
[node:crypto]:https://nodejs.org/api/crypto.html#class-hash
[@noble/hashes]:https://www.npmjs.com/package/@noble/hashes
[crypto.subtle.digest]:(https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest)