Introduction: Diceware With a Book

Diceware is a way to make strong passwords and passphrases using 5 actual dice and a printed list of 7776 common words.

The Diceware method was created by Arnold Reinhold in the mid 1990s. He recommends picking 6 words for strong encryption.

Note that Diceware works even if the attacker knows your word list and how many words you have used.

Diceware words are easy to remember and are available in many languages.

I never seem to have the printed Diceware list available when I need to create a passphrase, so I am using a book instead.

This book method works best with books like dictionaries, thesauruses, and encyclopedias with ten to a hundred thousand words arranged in two columns.

In this example, I am using the widely available Official Scrabble® Players Dictionary. It costs about $4 USD including shipping on eBay.

Step 1: Roll Standard Dice

Standard dice are available at Walmart, convenience stores, and dollar stores. You may even have some in board games at home.

If you don't have 4 dice, just roll multiple times to create a 4 digit "dice" number. In the photo, the dice number is 4413.

Print out the attached PDF table, or view it on the screen. Look up 4413 and find the page number to the right of it. In this case, page 111.

Step 2: Pick Your Page Sector and Word

Now roll two more dice, in this case 5 and 2.

Turn to page 111 in the book.

Divide the page by eye into 6 sectors. Three on the left numbered 1 through 3, and three on the right from 4 through 6.

The first number you rolled tells you the page sector, here it is sector 5.

Place your three fingers on the page lined up approximately with the sector.

Don't worry if your book is so big that your fingers don't line up with the sector. Just raise your hand above the page until your fingers are closer to your eye and fill the sector completely.

This is a very rough-and-ready method for picking words. No need to be perfect here, it works fine for all the different books I have tried, big and small.

Your fingers are numbered 1,2 for the top finger, then 3,4 and 5,6. Yes, there are two numbers per finger.

Here the bottom half of my top finger is pointing to COGWHEEL.

Repeat 6 times to get 6 code words for your passphrase.

You are all set. Please leave any questions or constructive ideas in the comments.

Step 3: Notes for This Instructable

You might ask, why not just use the Diceware printed word list, after all, you don't have to convert, and then look up a page number, and then roll again to select a finger.

Well first, I did it to see if I could learn a little about dice by converting groups of rolls into decimal page numbers. I learned a lot about base 6 and basic number theory by seeing which numbers were possible to roll.

Then, I also like to use a handy, easy-to-flip book instead of a stapled Diceware word list.

Here's how I created the dice roll list from 1111 to 6666 which is a total of 1296 patterns.

I made a Google Docs spreadsheet with a column filled with the numbers 1 to 1296.

Then I created this formula to display the corresponding dice roll:


Note that I subtract one from the input to get 0 to 1295. Then I convert it to base 6 displayed with 4 characters.

Finally, I add 1 to each base 6 digit to convert to dice numbers because each dice digit is offset by one. In other words, there is no numeral 0 on dice.

How did I match the page numbers to the book? Well I just got lucky. The dictionary I used had 674 pages, so 648 dice patterns (half 1296) just worked out well. Sure I'm missing WARHORSE to ZYMURGY, but I do have over 96% of the pages.

You may want to know what other page counts are possible. Simply divide the total number of patterns by the integers and you'll see that 1296, 648, 432, 324, 216, 108 and many others are available for you. Just choose one bigger than your book's page count. After all, it's less of a hassle to be missing pages, than to have to throw away a dice roll.

The hardest part of this project was formatting the serpentine table in Google Docs by cutting and pasting from the spreadsheet.