JSPM

basic32

1.0.0
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 2
  • Score
    100M100P100Q19909F
  • License MIT

Transform decimal OTP codes to shorter Base32 codes

Package Exports

  • basic32

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (basic32) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Basic32

Basic32 encodes and decodes OTP (One-time passcode) tokens to and from a standard length Base32 string, effectively making them shorter.

Why?

Basic32 decreases the number of characters needed for a OTP code, making the code easier for users to remember.

Regular TOTP Encoded TOTP
6 digits 4 chars
7 digits 5 chars
8 digits 6 chars
9 digits 6 chars

Installation

npm i basic32
import Basic32 from 'basic32';

Usage

import Basic32 from 'basic32';

/* Initialize the encoder */
const basic = new Basic32(/* Number of digits in OTP code, default: 6 */);

/* Encode a number or string */
basic.encode(123456); // -> "3WX0"
basic.encode('123456'); // -> "3WX0"

/* Decode a string */
basic.decode('3WX0'); // -> "123456"

/* Decode a string, but zero is switched with letter o */
basic.decode('3WXO'); // -> "123456"

/* Decode the wrong number of characters */
basic.decode('3WX0A'); // -> new Error("Code should be 4 alphanumeric characters")

/* Decode an already decoded string */
basic.decode('123456'); // -> "123456"

Character Corrections

The following character transposition errors are automatically fixed.

User Writes Interpreted
(Letter) O (Number) 0
(Letter) I (Number) 1
(Letter) L (Number) 1
(Letter) B (Number) 8

License

MIT © 2020 Russell Steadman. See LICENSE.