这是在JavaScript中生成安全随机字符串的好方法吗?

时间:2014-04-23 16:09:02

标签: javascript string random cryptography

下面是我编写的用于在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;
}

1 个答案:

答案 0 :(得分:1)

我认为这一切都减少了找到一种在Javascript中生成随机数的替代方法,而不是依赖于Math.random

替换Math.random后,您可以以几乎相同的方式生成随机字符串。我建议看一下Mersenne twister算法。有很多Javascript实现(有些甚至在我链接的维基百科页面中)。

与许多随机数生成器一样,您必须从种子开始:您可以使用Math.random生成一个种子,如果您愿意,可以添加额外的“盐”。