0.0.3 • Published 1 year ago

protonhash.js v0.0.3

Weekly downloads
-
License
ISC
Repository
github
Last release
1 year ago

ProtonHash.js

ProtonHash.js is a Node.js package that provides a simple interface for generating hash values from files or strings. It is a port of the ProtonSDK hash algorithm from C++ to JavaScript.

To use this package in your project, install it via npm:

npm install protonsdk-hash

Usage

The package exposes four functions: filesize, HashString, getA, and hashFile.

filesize(filename)

filesize returns the size of the file with the given filename in bytes. It takes one argument:

filename: The path to the file to get the size of.
const { filesize } = require('protonhash');

const size = filesize('example.txt');
console.log(`Size of file: ${size}`);

HashString(str, len)

HashString computes the hash of a string or buffer. It takes two arguments:

str: The string or buffer to compute the hash of.
len: The length of the string or buffer, or 0 if the length should be automatically determined.
const { HashString } = require('protonhash.js');

const hash = HashString('Hello, world!', 0);
console.log(`Hash: ${hash}`);

getA(filename, pSizeOut, bAddBasePath, bAutoDecompress)

getA reads the contents of a file into a Uint8Array. It takes four arguments:

filename: The path to the file to read.
pSizeOut: An array to store the size of the file in bytes.
bAddBasePath: (Unused in the JavaScript implementation. It is included for compatibility with the original C++ implementation.)
bAutoDecompress: (Unused in the JavaScript implementation. It is included for compatibility with the original C++ implementation.)
const { getA } = require('protonhash.js');

let size = 0;
const pData = getA('example.txt', [size], false, false);
console.log(`Hash: ${HashString(pData, size)}`);

hashFile(filename)

hashFile is a convenience function that combines filesize, getA, and HashString to compute the hash of a file in one step. It takes one argument:

filename: The path to the file to compute the hash of.
const { hashFile } = require('protonhash.js');

const hash = hashFile('example.txt');
console.log(`Hash: ${hash}`);

Example

You can run this application using node in the command line. The application prompts the user to enter a file path, reads the file, calculates the hash value using protonhash, and displays the hash value in the console.

const protonhash = require('protonhash.js');

const readline = require('readline');

async function main() {
  let filename = process.argv[2];
  if (!filename) {
    const rl = readline.createInterface({
      input: process.stdin,
      output: process.stdout,
    });
    filename = await new Promise((resolve) =>
      rl.question('Enter file path: ', resolve)
    );
    rl.close();
  }
  let pData;
  let size = 0;
  size = protonhash.filesize(filename);
  pData = protonhash.getA(filename, size, false, false);
  if (pData) {
    console.log(`Hash file success! Hash: ${protonhash.HashString(pData, size)}`);
  }
}

main();

License

This package is licensed under the MIT License.

0.0.3

1 year ago

0.0.2

1 year ago

1.0.2

1 year ago

1.0.0

1 year ago

1.0.1

1 year ago