相关疑难解决方法(0)

JavaScript的Math.random是多么随机?

6年来,我的网站上有一个随机数生成器页面.很长一段时间,它是Google上"随机数生成器"的第一个或第二个结果,并且已被用于在论坛和博客上决定数十个(如果不是数百个)竞赛和绘图(我知道因为我看到了我的推荐人)网络日志,通常去看看).

今天,有人通过电子邮件告诉我,它可能不像我想的那么随机.她尝试生成非常大的随机数(例如,介于1和10000000000000000000之间),发现它们几乎总是相同的位数.实际上,我将函数包装在一个循环中,因此我可以生成数千个数字,当然,对于非常大的数字,变化只有大约2个数量级.

为什么?

这是循环版本,所以你可以自己试试:

http://andrew.hedges.name/experiments/random/randomness.html

它既包括Mozilla开发者网络的直接实现,也包括1997年我从不再存在的网页中删除的一些代码(Paul Houle的"Central Randomizer 1.3").查看源以查看每种方法的工作原理.

我在这里和其他地方读过有关Mersenne Twister的文章.我感兴趣的是为什么JavaScript的内置Math.random函数的结果没有更大的变化.谢谢!

javascript random

111
推荐指数
7
解决办法
6万
查看次数

使用javascript中的要求生成随机密码字符串

我想生成一个随机字符串,必须有来自az和3个数字的5个字母.

我怎么能用javascript做到这一点?

我有以下脚本,但它不符合我的要求.

        var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
        var string_length = 8;
        var randomstring = '';
        for (var i=0; i<string_length; i++) {
            var rnum = Math.floor(Math.random() * chars.length);
            randomstring += chars.substring(rnum,rnum+1);
        }
Run Code Online (Sandbox Code Playgroud)

javascript

79
推荐指数
10
解决办法
9万
查看次数

在javascript中保护随机数?

如何在javascript中生成加密安全随机数?

javascript cryptography

76
推荐指数
5
解决办法
4万
查看次数

使用TypeScript扩展Object.prototype

我目前正在开发TypeScript API,它需要一些绑定到Object原型(Object.prototype)的附加功能.

请考虑以下代码:

class Foo {

}

interface Object {
    GetFoo(): Foo;
    GetFooAsString(): string;
}

//This is problematic...
Object.prototype.GetFoo = function() {
    return new Foo();
    // Note, this line is just for testing...I don't want my function to just return a blank instance of Foo!
}

//This is ok.
Object.prototype.GetFooAsString = function () {
    return this.GetFoo().toString();
}
Run Code Online (Sandbox Code Playgroud)

您可能想直接在Playground尝试这个.

如你所见,我有一个叫做的类Foo(不是我将要使用的实际对象名).我还扩展了Object界面以包含两个新功能.最后我实现了针对prototype这些功能(这些工作在纯JavaScript中,它只是抱怨的TypeScript).

我在其中注释" //这是有问题的...... "TypeScript用红色波浪形突出显示,并显示以下错误:

Cannot convert '() => Foo' to '{ (): Foo; (): …
Run Code Online (Sandbox Code Playgroud)

javascript prototype interface object typescript

28
推荐指数
3
解决办法
4万
查看次数

javascript在各种浏览器中随机实现的可信度如何?

我想做一些javascript和加密的实验,我很好奇随机函数的实现有多么不可预测.有人做过任何硬测试吗?

显然,浏览器能够生成强随机性(对于ssl).问题是他们给javascript访问相同的力量.

javascript random math

20
推荐指数
3
解决办法
7182
查看次数

如何在javascript中获取一位数的随机数?

可能重复:
在特定范围内的Javascript中生成随机数?

有人可以告诉我如何使用Math.random()或javascript中的其他方式获得一位数随机数(1,2,3,..不是0.1,0.2,..或1.0,5.0,..)?

javascript random math digit

9
推荐指数
2
解决办法
2万
查看次数

什么使字符串/令牌加密安全?

如果您需要生成字符串/令牌来验证未来的请求(例如API密钥,电子邮件确认URL等),应考虑哪些因素?

特别是

  • 是什么让字符串"安全"/"非常难以猜测"?
  • 如何测量/估算"安全数额"?
  • 那里的主要标准是什么?

一个实际的例子

让我们从NodeJS中获取这两个输出字符串.

字符串1(通过节点加密)

var crypto = require('crypto');
crypto.randomBytes(48, function (ex, buf) {
  console.log(buf.toString('hex'));
});
Run Code Online (Sandbox Code Playgroud)

字符串2(通过节点UUID)

var uuid = require('node-uuid');
console.log(uuid.v4());
Run Code Online (Sandbox Code Playgroud)

基于上面概述的概念,哪一个更安全,为什么?

此外,请随时提出有关该主题的任何好的介绍性材料,因为我无法在网上轻松找到有关此内容的文章.

security random cryptography token node.js

5
推荐指数
1
解决办法
1331
查看次数

导入节点模块会产生错误

我在app.js中导入了节点模块'request',但是一旦我的脚本读了,

var request = require('request'); 
Run Code Online (Sandbox Code Playgroud)

它会产生如下错误.有人有想法吗?

错误信息:

[SECURITY] node-uuid:crypto不可用,回退到不安全的Math.random()

node.js

5
推荐指数
1
解决办法
680
查看次数

Math.random() === Math.random() 是否有可能

在 JavaScript 中,这个表达式会在任何浏览器中计算为 true 吗?为什么或者为什么不?

  Math.random() === Math.random()
Run Code Online (Sandbox Code Playgroud)

注意:请按字面意思理解上面的代码。我不是在问 Math.random 是否会生成重复值。

注意2:没有猴子补丁

这个问题是关于 Math.random() 的内部实现,而不是关于随机数的性质。

javascript random

4
推荐指数
1
解决办法
1883
查看次数

使用 Firebase 的 push()/childByAutoID 生成的名称的唯一性保证是什么?

我想使用 Firebase 制作位置难以猜测的公开可读数据。因此,为了让某人访问存储在“元素 [元素 ID = X]”中的数据,我只想向他们发送“X”,而不是向他们发送“X”以及专门为他们提供访问权限的安全令牌到元素。Firebase 的push()和childByAutoID看起来很自然:我可以授予对所有单个元素的公开读取访问权限,但拒绝公开列表。我的代码将完全没有令牌和随机数生成。自动生成的 ID 应该是唯一的,因此应该很难猜测。

从Firebase.js看来,自动生成的 ID 的前 8 个字符是基于当前时间戳的,接下来的 12 个字符是使用Math.random(). 我认为iOS的框架做同样的事情,虽然我不能看到代码,库链接到两个SecRandomCopyBytes及arc4random。

就我而言,这看起来已经足够了,但是有没有人看到 Firebase 提供的关于我们是否可以指望这种行为的指导?我不想构建假设这些名称是相对强的随机字符串的代码,然后在升级到较新版本的 Firebase 时违反了该假设。

javascript security ios firebase

0
推荐指数
1
解决办法
630
查看次数