Случайные строки с высокой плотностью в Javascript

Я сейчас генерирую UUID в Javascript с помощью этой функции ( Создать GUID / UUID в JavaScript? ):

lucid.uuid = function() {
    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
        var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
        return v.toString(16);
    });
}

Я понимаю, что вся случайность поступает из функции Javascript Math.random (), и меня не волнует, соответствует ли она RFC для UUID. Я хочу упаковать как можно больше случайности в как можно меньше байтов в строке Javascript. Вышеупомянутая функция дает примерно 128 бит случайности. Насколько малая строка (измеренная в байтах UTF8, отправленных по сети в HTTP POST) я могу уместить 128 бит в Javascript? И как я могу сгенерировать такая строка?

Изменить: эта строка будет частью объекта JSON при отправке на сервер, поэтому символы, которые необходимо экранировать в строке, не очень полезны.

7
задан Community 23 May 2017 в 11:55
поделиться