If I had such problem, I would operate as follows:
- Obtain a list of 8192 different words. Then the $x$-th word of this list is denoted by
L[x]
(where $x$ is a natural number in decimal).
- Given any bitstring (hash of the password), split it into 13-bit parts. Denote an $i$-th part by
N_i
.
- The sequence of words is
L[N_1] L[N_2] L[N_3] ...
.
For example, SHA3-512 online web app shows that SHA-3-512("MyPassword")
starts with the following bytes:
35 c6 36 f4 40 b7 d7 40 7a ...
Converting this hash to a binary form (byte after byte) and splitting into 13-bit parts yields the sequence
0011010111000 1100011011011 1101000100000 ...
Converting each part from binary to decimal yields
L[1720] L[6363] L[6688] ...
If the list is taken from Wiktionary:Frequency_lists/PG/2006/04/1-10000, the resulting sequence of English words would be
admit billion lists ...
if we assume that 13 zero bits correspond to the last word of the list. If we assume that 13 zero bits correspond to the first word of the list and 13 set bits correspond to the last word of the list, then the resulting sequence of English words would be
supply shorter gallop ...
DocumentKey
to be legible English words and to function as the key for an encryption algorithm? Or you want the password to consist of English words? $\endgroup$