N элементов (до 32)....однозначно из строки (пароля) любой длины
Думаю можно сделать это с использованием sha-256 (для 32 элементов в самый раз):
let permutation = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31];
sha256.array('суперпароль').forEach((n, i) => {
let j = n % (permutation.length - i) + i;
[permutation[i], permutation[j]] = [permutation[j], permutation[i]];
});
console.log(permutation); // [19, 30, 25, 16, 23, 8, 11, 27, 13, 6, 4, 26, 21, 28, 24, 14, 2, 5, 15, 18, 10, 0, 7, 22, 31, 9, 17, 29, 20, 3, 12, 1]
codepen