Coder Social home page Coder Social logo

qpc-database / ion-hash-js Goto Github PK

View Code? Open in Web Editor NEW

This project forked from amazon-ion/ion-hash-js

1.0 1.0 0.0 272 KB

A JavaScript implementation of Amazon Ion Hash.

Home Page: https://amzn.github.io/ion-hash/

License: Apache License 2.0

JavaScript 5.03% TypeScript 94.90% Shell 0.07%

ion-hash-js's Introduction

Amazon Ion Hash JavaScript

An implementation of Amazon Ion Hash in JavaScript.

Build Status npm version license docs

Getting Started

This library is designed to work with Node 8/ES5/CommonJS.

Node

  1. Add dependencies for ion-hash-js and its peerDependencies:

    npm install --save ion-hash-js ion-js jsbi
    
  2. Note the examples below assume the availability of the following utility method:

    function toHexString(byteArray) {
        let sb = '';
        byteArray.forEach(b => {
            if (sb != '') { sb += ' ' }
            sb += ('0' + (b & 0xFF).toString(16)).slice(-2);
        });
        return sb;
    }
  3. Use the library to generate the Ion hash of any value:

    let ionHash = require('ion-hash-js');
    
    let digest = ionHash.digest([1, 2, 3], 'md5');
    console.log('digest: ' + toHexString(digest));

    produces:

    digest: 8f 3b f4 b1 93 5c f4 69 c9 c1 0c 31 52 4b 26 25

  4. Use cases for which a more efficient API is preferable should consider using the low-level HashReader API to generate an Ion hash:

    let ion = require('ion-js');
    let ionHash = require('ion-hash-js');
    
    let ionStr = '[1, 2, 3]';
    let hashReader = ionHash.makeHashReader(
        ion.makeReader(ionStr),
        ionHash.cryptoHasherProvider('md5'));
    hashReader.next();
    hashReader.next();
    
    let digest = hashReader.digest();
    console.log('digest: ' + toHexString(digest));

    produces:

    digest: 8f 3b f4 b1 93 5c f4 69 c9 c1 0c 31 52 4b 26 25

  5. A low-level HashWriter API may be used to generate an Ion hash while writing Ion data:

    let ion = require('ion-js');
    let ionHash = require('ion-hash-js');
    
    let hashWriter = ionHash.makeHashWriter(
        ion.makeTextWriter(),
        ionHash.cryptoHasherProvider('md5'));
    hashWriter.stepIn(ion.IonTypes.LIST);
    hashWriter.writeInt(1);
    hashWriter.writeInt(2);
    hashWriter.writeInt(3);
    hashWriter.stepOut();
    
    let digest = hashWriter.digest();
    console.log('digest: ' + toHexString(digest));

    produces:

    digest: 8f 3b f4 b1 93 5c f4 69 c9 c1 0c 31 52 4b 26 25

Development

This repository contains a git submodule called ion-hash-test, which holds test data used by ion-hash-js's unit tests.

The easiest way to clone the ion-hash-js repository and initialize its ion-hash-test submodule is to run the following command:

$ git clone --recursive https://github.com/amzn/ion-hash-js.git ion-hash-js

Alternatively, the submodule may be initialized independently from the clone by running the following commands:

$ git submodule init
$ git submodule update

Known Issues

Any tests commented out in tests/ion_hash_tests.ion are not expected to work at this time.

License

This library is licensed under the Apache 2.0 License.

ion-hash-js's People

Contributors

jonwilsdon avatar jpeddicord avatar

Stargazers

 avatar

Watchers

 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.