# bonewords

Bonewords are passwords created using a 6 sided dice and a password generation system designed by me.  It was first discussed in the blog post "Using Dice to Generate Human Readable Passwords".  

=> ../journal/using-dice-to-generate-human-readable-passwords.gmi Using Dice to Generate Human Readable Passwords

## Name Origin

"Bones" is a slang word for "Dice" and "words" comes from "passwords", therefore "bonewords" are passwords that were generated by dice.

## Generating Bonewords

All bonewords are a minimum of 3 characters long and consist of 2 parts, the "N-3" characters part and the "last 3" characters part.  The N-3 characters part is every character except for the last 3 characters of the boneword.  The last 3 characters part is the last 3 characters of the boneword.

### N-3 Characters

For each character of the N-3 characters part, a dice is rolled to determine which of 6 groups of characters are used.  The groups are listed below.  After determining the group, the dice is rolled again to determine the character to select of the group.

* 1: abcdef
* 2: ghikmn
* 3: oprswz
* 4: AEFHLY
* 5: 234678
* 6: +,-/?^

For example, rolling a 4 sets the group to "AEFHLY" and then rolling a 2 selects the "E" character of that group.

Repeat this for every character of the boneword in the N-3 characters part.

### Last 3 Characters

For the last 3 characters, a related but different system is used compared the the N-3 characters.  For the first of the last 3 characters, a dice roll (1st roll of last 3 characters) is used to determine which of the following 3 groups of characters are used.  The dice is rolled again (2nd roll of last 3 characters) to determine the character to select of the group.

* 1 or 4: AEFHLY (Uppercase Letters)
* 2 or 5: 234678 (Numbers)
* 3 or 6: +,-/?^ (Special Characters)

For example, rolling a 3 sets the group to Special Characters and then rolling a 1 selects the "+" character of that group.

The dice is rolled again (3rd roll of last 3 characters) to determine which of the remaining groups to use for the second of the last 3 characters.  The top-most of the 2 remaining groups will be selected if the dice roll results in an odd number otherwise the bottom-most of the 2 remaining groups will be selected if the dice roll results in an even number.  The dice is rolled again (4th roll of last 3 characters) to determine the character to select of the selected group.

For example, with the remaining groups Uppercase Letters and Numbers, rolling a 1 sets the group to Uppercase Letters and rolling a 4 selects the "H" character of that group.

The dice is rolled one last time (5th roll of last 3 characters) to select the character of the last remaining group.

For example, withe the last remaining group of Numbers, rolling a 5 selects the "7" character of that group.

## Cheat Sheet

The following "Cheat Sheet" shows the rules for generating bonewords.

``` "Cheat Sheet" for generating bonewords
First N-3 Characters

   1    |   2    |   3    |   4    |   5    |   6
--------+--------+--------+--------+--------+--------
 abcdef | ghikmn | oprswz | AEFHLY | 234678 | +,-/?^


Last 3 Characters

            1 or 4 | 2 or 5 | 3 or 6
if 1 or 4:         |  odd   |  even
if 2 or 5:   odd   |        |  even
if 3 or 6:   odd   |  even  |
-------------------+--------+--------
            AEFHLY | 234678 | +,-/?^
```

## Software

A program written in the Go programming language also named "bonewords" was created to generate bonewords using a computer rather than needing to use dice.  The source code for that software is found at the link below.

=> gemini://git.vigrey.com/bonewords/index.gmi Bonewords Source Code

## Incoming Wiki Links

=> index.gmi {index}