protonhash.js
v0.0.3
Published
Protonhash writed on javascript
Downloads
1
Readme
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.