Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用Stanford PRNG生成随机字符串?_Javascript_Random_Prng_Sjcl - Fatal编程技术网

Javascript 如何使用Stanford PRNG生成随机字符串?

Javascript 如何使用Stanford PRNG生成随机字符串?,javascript,random,prng,sjcl,Javascript,Random,Prng,Sjcl,我需要在用户浏览器中生成一个安全的50个字符的随机字符串 看看目前为止我得到的结果: $(document).ready(function () { sjcl.random = new sjcl.prng(8); sjcl.random.startCollectors(); $("body").on('mousemove', function() { console.log(sjcl.random.getProgress(8));

我需要在用户浏览器中生成一个安全的50个字符的随机字符串

看看目前为止我得到的结果:

$(document).ready(function () {

    sjcl.random = new sjcl.prng(8);

    sjcl.random.startCollectors();

    $("body").on('mousemove', function() {
        console.log(sjcl.random.getProgress(8));

        if(sjcl.random.isReady(8) === 2) {
            sjcl.random.stopCollectors();
            console.log(sjcl.random.randomWords(5,8));
        }
    });

});
在移动鼠标一段时间后,我得到了如下字节数组:
[-5792853641099191484449979086,-1572161987,-570940948]

但我要找的是一个50个字符的字母数字字符串。我在这方面的知识有限,我在这里寻求帮助

  • 生成一个包含39个随机字节的数组,每个字节
    0..255

  • 将数组表示为Base64字符串。这将是52个字符长。互联网上将提供Javascript Base64编码器

  • 切掉字符串的最后两个字符(或前两个或第一个和最后一个字符)

  • 如果要在浏览器中使用生成的随机字符串,则可能需要浏览器安全版本的Base64:
    a-z a-z 0-9-\uz
    而不是
    a-z a-z 0-9+/


    有关Base64的详细信息,请参阅。

    以下是我如何解决它的:

    函数createRandomString(回调,长度){
    var randomBase64String='',
    反复无常;
    CheckReadynes=setInterval(函数(){
    控制台日志(长度);
    如果(sjcl.random.isReady(10)){
    while(randomBase64String.length

    [].slice.call(crypto.getRandomValues(new uint32数组(999)).map(函数(a,b){return a.toString(36);}).join(“”)。replace(/\W/g,“”)。match(/\W{50}/g)。slice(1,-1)感谢您的评论。但我真的不知道这意味着什么:(