npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

@corellium/checksum

v0.0.7

Published

A library and cli for working with corellium checksums

Downloads

57

Readme

@corellium/checksum

A library and cli for working with corellium checksums. Supports NodeJS and the browser.

Corellium Hashes are in the format <algo>$<chunkSizeInBytes>$<hash>.

Why?

We want to be able to generate file hashes in a performant way in a distributed system. To achieve this, we're going to hash the individual chunks of a file across the nodes consuming them during an upload. Then, when the upload is finished, we'll take the individual chunk hashes and hash those. This will give us a "composite hash" of the entire file for verification.

We chose the format <algo>$<chunkSizeInBytes>$<hash> so that we have enough information to rebuild the hash preserved in the hash itself. Given a file X and it's hash sha1$256000$abcde you can regenerate the hash for X by hashing it in chunks of 256kB with sha1 and then hashing all of those hashes with sha1. If the file is identical, then you should end up with abcde hash.

CLI

corellium-checksum ./path/to/file

If testing locally, npm link @corellium/checksum and then run.

Example

Here's a short gif showing the CLI in action. We generate a 100kB file of 0s and then generate a corellium checksum with 33kB chunks. After we generate the corellium checksum, we verify the hash by splitting the file apart in 33kB chunks, hashing each chunk with the same algorithm (sha1), and then hashing all the chunks.

@corellium/checksum demo

For a 10gB file of random data it takes about 10 seconds when configured to hash in chunks of 50mB.

10gB File corellium checksum

Browser Testing

In order to facilitate easier testing of the this packages browser compatibility, a simple https server has been created in this repo under the browser-testing directory. See the README.md in that directory for more information.