GithubHelp home page GithubHelp logo

carsonxu / crc64.js Goto Github PK

View Code? Open in Web Editor NEW

This project forked from souche-koumakan/crc64_ecma182.js

0.0 0.0 0.0 154 KB

Pure JavaScript implement of CRC64-ECMA182 for Node.js.

License: MIT License

JavaScript 38.69% C++ 12.98% C 7.03% Makefile 0.90% Go 24.46% Python 15.94%

crc64.js's Introduction

crc64.js

Pure JavaScript implement of CRC64-ECMA182 for Node.js.

This package can be used as verify Tencent COS and Ali-OSS file.

Usage

Calculate a Buffer

You can calculate the CRC64-ECMA182 value for a Node.js buffer or string:

crc64.crc64(buff[, prev]);
  • Parameters:
    • buff: the buffer or string to be calculated;
    • [prev]: if exists, prev indicates the previous CRC64-ECMA182 value; (optional)
  • Returns: the result string indicates a uint64 value that calculated.
const crc64 = require('./crc64');
const ret1 = crc64.crc64("123456789");
const ret2 = crc64.crc64(new Buffer("123456789"));
const ret3 = crc64.crc64("123456789", "0");
const ret4 = crc64.crc64(new Buffer("123456789"), "0");

// ret1 ~ ret2 all equals to:
//
//   '11051210869376104954'

Calculate a file

You can calculate the CRC64-ECMA182 value for a file:

crc64.crc64_file(filename, callback);
  • Parameters:
    • filename: the file's name that to be calculated;
    • callback: the callback function which receives two arguments err and ret.
crc64.crc64_file(path.join(__dirname, "pic.png"), function(err, ret) {
  console.log(err, ret);

  // a possible result:
  //
  //   undefined 5178350320981835788
});

concat file chunks crc64

You can combine file parts crc64 into a total crc64:

crc64.crc64_concat([{hash1, size1}, {hash2, size2}], callback)
  • Parameters:
    • hashList: crc64 info list, [{hash1, size1}, {hash2, size2}]
    • callback: the callback function which receives two arguments err and ret.
var list = ['123', '456'];
var crc64List = list.map(str => {
  var size = str.length;
  var hash = crc64.crc64(str);
  console.log(`${str}: ${hash}, 0x${hash.toString(16)}`);
  return {hash, size};
});
var hash = crc64.crc64_concat(crc64List);
console.log(`${list.join('')}: ${hash}, 0x${hash.toString(16)}`);

Contribution

You're welcome to make pull-requests.

crc64.js's People

Contributors

carsonxu avatar xadillax avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.