GithubHelp home page GithubHelp logo

eboot / base32-js Goto Github PK

View Code? Open in Web Editor NEW

This project forked from agnoster/base32-js

0.0 1.0 0.0 177 KB

Base32 encoding for JavaScript, based (loosely) on Crockford's Base32

Home Page: https://github.com/agnoster/base32-js

License: MIT License

JavaScript 63.41% CoffeeScript 34.39% HTML 2.21%

base32-js's Introduction

Base 32 encoding/decoding for JavaScript build status

Base 32 is between hexadecimal notation and Base 64 encoding. It's intended to be a human-friendly -- you don't have to worry about punctuation, capitalization, or letters/numbers that are easy to confuse, making it easier to transmit in handwriting or over the phone.

One of the primary purposes is to have aesthetically pleasing SHA1 hashes. Compare:

  • Hex: 17O57684bea1f9331418b633a8f373119d765fd4
  • B64: xE_ptB5SeclHm8JEsD0-ST1mTBM
  • B32: 2w2qd15ym7wk650rprtuh4vk26eqcqym

Try giving out the Base 64 hash over the phone! "lowercase 'x', capital 'E', underscore, lowercase 'p', ..." Base 32 will work the same with upper- or lowercase, you can mistake a number for a similar-looking letter, and it will still decode to the same data.

Getting started

In your shell, install with npm:

npm install base32

In your code:

var base32 = require('base32')

// simple api

var encoded = base32.encode('some data to encode')
var decoded = base32.decode(encoded)

// streaming api
this.encoder = new Base32.encoder()
this.dataCallback = function(chunk) {
    this.emit(this.encoder(chunk))
}
this.closeCallback = function(chunk) {
    this.emit(this.finish()) // flush any remaining bits
}

// easy sha1 hash
var hash = base32.sha1(some_data_to_hash) // DONE.

On the command-line (to install system-wide, use npm install -g base32):

base32 -h
#> Usage: base32 [input_file] [-o output_file] [-d|--decode] [-s|--sha]
echo "Hello World" | base32
#> 91jprv3f41bpywkccg50
echo 'axqqeb10d5u20wk5c5p6ry90exqq4uvk44' | base32 -d
#> Wow, it really works!
base32 -s test/*
#> ky2t1raumjn9cghne773petngx3zz3q7  test/base32-test.coffee
#> 6b4bkjaveddmg5jh7hnyw132yht20g6e  test/compare.coffee

Warning: this is a Base 32 implementation, not the Base 32 implementation

There are about (128 choose 32) different specifications of something called "Base 32" - see Wikipedia for some of them.

This is just one that should be simple, less error-prone, and streamable (for Node).

Minispec

  • The encoding alphabet consists of the numerals 0-9 and the letters a-z, excluding a few letters that might look like numbers, which we simply interpret as follows:

    • I -> 1
    • L -> 1
    • O -> 0
    • S -> 5
  • When decoding, capital letters are converted to lowercase and the "ambiguous" letters mentioned above converted to their numeric counterparts.

  • Each character corresponds to 5 bits of input.

  • Lexicographic order of strings is preserved through Base 32 encoding.

Formalia

Under MIT License.

Fork as much as you like, I'm more than amenable to pull requests. I'm trying to keep it reasonably node-ish, so bear that in mind.

base32-js's People

Contributors

agnoster avatar michaeljcole avatar mikepb 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.