Skip to content

mr-word/base32cx

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

base32cx is a base32 encoding with letter-case checksum.

It uses the alphabet 456789ABCDEFGHIJKLMNOPQRSTUVWXYZ to maximize the expected number of checksum bits.

Say "base 32 checks" or shorten to "b32x". (Don't say "base32x", because that's a homophone for "base32hex".)

This is the first implementation. It is not yet efficient and the canonical tests need to be verified. Please consider making your own implementation.

Usage

npm install b32x

const b32x = require('b32x')

const hex = 'ff00f0f0'
let encoded = b32x.fromHex(hex)
console.log(encoded) // 'zw4J5W4'
let decoded = b32x.toHex(encoded)
expect(encoded).to.deep.equal(decoded)

const bytes = [255, 0, 240, 240]
encoded = b32x.fromBytes(bytes)
console.log(encoded) // 'zw4J5W4'
decoded = b32x.toBytes(encoded)
expect(encoded).to.deep.equal(decoded)

Some Example

ASCII

ascii    : H
base32cx : d4
ascii    : He
base32cx : d5MK
ascii    : Hel
base32cx : D5MQs
ascii    : Hell
base32cx : D5mqSV4
ascii    : Hello
base32cx : d5mQSv7j
ascii    : Hello!
base32cx : d5MQsv7J88


HEX

256-bit hash
hex:  bbb464a9804ce0caa2c344ec7c98c70c69722113cda2393779fbc7f0cc116673
b32x: riUADEg4dnKgpcq7CNqbtaab5LoR8cCntQl7mhvTZJ7z5N4LGTtk

160-bit bitcoin address (base58)
base58  1MrWordHHqEDFQUjQ59xFNSA94759VJC35  (version byte + 160bit + 4 checksum bytes)
hex:    E4BFC7B7C4D354282F1DEA549B6776A740853B2D
b32x:   WMzwJHy8Uhe6kFSXXDedQTVQoX4ceitH

About

base32 encoding with letter-case checksums

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published