下面是我编写的用于在JavaScript中生成随机字符串的一些代码。如果我使用从此方法收到的值作为用户的盐或代币,是否存在安全问题?
String.random = function(length, characters) {
length = length === undefined ? 32 : length;
characters = characters === undefined ? 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' : characters;
var maxIndex = characters.length - 1;
var string = '';
for(var i = 0; i < length; i++) {
string += characters[Number.random(0, maxIndex)];
}
return string;
}
答案 0 :(得分:1)
我认为这一切都减少了找到一种在Javascript中生成随机数的替代方法,而不是依赖于Math.random
。
替换Math.random
后,您可以以几乎相同的方式生成随机字符串。我建议看一下Mersenne twister算法。有很多Javascript实现(有些甚至在我链接的维基百科页面中)。
与许多随机数生成器一样,您必须从种子开始:您可以使用Math.random
生成一个种子,如果您愿意,可以添加额外的“盐”。