Как это устроено
1. СлучайностьБраузер берёт 128–256 бит из системного
источника случайных чисел — того же, что используют для ключей шифрования. Обычный
генератор случайных чисел здесь не годится: он предсказуем.
2. Контрольная суммаОт этих бит считается SHA-256, и
первые несколько бит результата дописываются в хвост: по одному биту на каждые 32 бита
случайности. Для 12 слов это 4 бита, для 24 — восемь.
3. СловаПолучившаяся цепочка режется на куски по 11 бит.
Каждый кусок — это число от 0 до 2047, то есть номер слова в стандартном словаре.
Отсюда и размер словаря, и то, что слов всегда кратно трём.
4. ПроверкаОбратный ход: слова превращаются в номера,
номера в биты, от начала пересчитывается SHA-256 и сверяется с хвостом. Не сошлось —
где-то опечатка или слово переставлено.