В одном недавнем посте я рассказал, как написать утилиту для работы с палитрой в Alpine.js, и важной составляющей этой работы было запрограммировать случайность: каждый пробник на палитре генерировался как совокупность произвольно взятых значений «оттенок» (Hue) (0..360), «насыщенность» (Saturation) (0..100) и «осветление» Lightness (0..100). Собирая этот демо-пример, я наткнулся на Web Crypto API. Как правило, при генерации случайных значений я пользуюсь методом Math.random(); но в документации MDN указано, что есть более безопасный метод Crypto.getRandomValues(). Так что я решил всё-таки попробовать Crypto (оставив модуль Math в качестве резервного варианта). Но в итоге мне осталось только задумываться, а вдруг найдутся конкретные практические случаи, в которых «повышенная безопасность» означает «повышенную случайность».
Можете выполнить это демо в рамках моего проекта JavaScript Demos на GitHub.
Просмотрите этот код в рамках моего проекта JavaScript Demos на GitHub.