radixword
v0.1.0
Published
Encode Bitcoin wallets, DHT hashes and other data in a human-friendly format
Downloads
5
Readme
radixword
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", ...]
}