0.1.0 • Published 9 years ago

radixword v0.1.0

Weekly downloads
3
License
MIT
Repository
github
Last release
9 years ago

radixword Build Status

Encode Bitcoin addresses, DHT hashes and base64 data in a human-friendly format. Try it out!

Warning

This is merely an encoding method -- not encryption, not steganography.
A secret dictionary would still be vulnerable to a statistical attack.

Examples

Bitcoin address. 30 seconds to read out unencoded vs 13 seconds encoded. Both take approx 1:20 to type on Swiftkey.

  • 1Hhb9W6MZBkUmZijENZX3LYeKxJJ62WuXP
  • ere yoke abet dark box epic pelt lath cash lewd camp kiwi slate much hoist fixed dish

Magnet URL (sans the "magnet:?xt=urn:" prefix). 25 secs to read unencoded vs 15 seconds encoded. 2:30 to type unencoded on Swiftkey vs 1:25 encoded.

  • 18b9bd1f0ed88885605520a82a9d860c679d6755
  • milky mayan gawk teak spud exude chump bulky sioux spate saute riser felt seer salvo pied blimp seer blimp spate

Install

npm install radixword

Usage

Data must be in base64-compatible format before encoding.

var radixword = require("radixword");

radixword.encode("base64"); //=> "abut morn petal"
radixword.decode("abut morn petal"); //=> "base64"

Dictionary

dictionaryLength = keyspaceLength ^ charsPerWord

dictionary.json:

{

	// How many chars to encode per word
	"charsPerWord": 2,

	// Encoding chars, plus a padding char ("#")
	"keyspace": "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=#",

	// Delimiter for encoded data
	"delimiter": " ",

	// Word list
	"words": ["the", "and", "you", ...]

}