Ответ 1
Оформить заказ crypto.js. Его коллекция криптографических алгоритмов. Проект имеет отдельные js файлы для каждого алгоритма хэширования.
Я хочу создать случайную строку (токен), которая может использоваться для идентификации пользователя, избегая любых возможных конфликтов с токенами других пользователей.
То, о чем я думал, было хешем MD5 navigator.userAgent + new Date().getTime()
, чтобы сгенерировать токен, но для этого требуется вся Javascript MD5-библиотека для хеша, которую я действительно не хочу делать.
Он должен состоять из символов A-Z/0-9 и в идеале не более 32 символов. Я открыт для всех идей. Спасибо!
Просто для того, чтобы уточнить, что я не ищу генератор случайных строк, случайная строка должна быть сформирована из сведений о пользователе, доступных через Javascript, а также может использовать время, чтобы избежать потенциальных конфликтов!
Оформить заказ crypto.js. Его коллекция криптографических алгоритмов. Проект имеет отдельные js файлы для каждого алгоритма хэширования.
Вы можете создать случайное число и преобразовать его в базу 36 (0-9a-z
):
var rand = function() {
return Math.random().toString(36).substr(2); // remove `0.`
};
var token = function() {
return rand() + rand(); // to make it longer
};
token(); // "bnh5yzdirjinqaorq0ox1tf383nb3xr"
Эта функция позволяет вам установить длину и допустимые символы маркера.
function generate_token(length){
//edit the token allowed characters
var a = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890".split("");
var b = [];
for (var i=0; i<length; i++) {
var j = (Math.random() * (a.length-1)).toFixed(0);
b[i] = a[j];
}
return b.join("");
}
Просто вызовите функцию generate_token
generate_token(32); //returns "qweQj4giRJSdMNzB8g1XIa6t3YtRIHPH"
Вот как я генерирую случайные токены в JavaScript. Это в основном другая версия того, что Карим сделал в своем ответе .
/**
* Returns a random length string of length n
* See whitelist inside function for possible characters
*/
function generateToken(n) {
// white list all possible characters
var chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
// temp string to build a token
var token = '';
// loop: get random index from whitelist, append to temp string
for(var i = 0; i < n; i++) {
// random from 0 to length of whitelist
var randomCharIndex = Math.floor(Math.random() * chars.length);
// append a random character to the temp string
token += chars[randomCharIndex];
}
// finally return the random token string
return token;
}