Javascript 流星随机-如何知道是强还是弱发生器
meteor的文档中说: 。。。在可能的情况下,它使用加密的strong伪随机数生成器,但在加密的强随机性不可用时,会退回到较弱的随机数生成器(在较旧的浏览器或服务器上,没有足够的熵来为加密强大的生成器播种) Q:如果生成强随机生成器可用或不可用,我可以在脚本中的某个地方获取信息吗 我想展示一个框,比如:“对不起,您不能在您的环境中生成强随机数”,而不是创建较弱的随机数 谢谢你的反馈 Tom查看代码: 我看到随机对象的一个“type”属性,它指示正在使用哪种类型的随机数生成器 提取的值:Javascript 流星随机-如何知道是强还是弱发生器,javascript,meteor,random,Javascript,Meteor,Random,meteor的文档中说: 。。。在可能的情况下,它使用加密的strong伪随机数生成器,但在加密的强随机性不可用时,会退回到较弱的随机数生成器(在较旧的浏览器或服务器上,没有足够的熵来为加密强大的生成器播种) Q:如果生成强随机生成器可用或不可用,我可以在脚本中的某个地方获取信息吗 我想展示一个框,比如:“对不起,您不能在您的环境中生成强随机数”,而不是创建较弱的随机数 谢谢你的反馈 Tom查看代码: 我看到随机对象的一个“type”属性,它指示正在使用哪种类型的随机数生成器 提取的值: N
- NODE_CRYPTO-使用NODE.js RNG-可能从未在浏览器中使用过
- 浏览器加密-使用Web浏览器的随机数生成器-假定为字符串
- ALEA—JavaScript中的“不安全”随机数生成器实现
if (typeof window !== "undefined" && window.crypto && window.crypto.getRandomValues) {
// We don't have to use Alea (strong)
} else {
// We have to use Alea (weak)
}
if(Random.type === 'ALEA'){
// weak
}
如果,您可以使用相同的,也可以只执行以下操作:
if (typeof window !== "undefined" && window.crypto && window.crypto.getRandomValues) {
// We don't have to use Alea (strong)
} else {
// We have to use Alea (weak)
}
if(Random.type === 'ALEA'){
// weak
}
好的,谢谢你的指导帮助,但是没有你的帖子回答了这个问题,因为我想这样做
@奥斯卡:你的长(typeof…)测试应该可以,但这不是测试meteor的随机软件包,而是测试浏览器界面
不幸的是,.type
属性在Random
对象中不可用
要使用随机对象,必须使用:
if (Meteor.isClient) {
if (Random && Random.alea) {
// only weak
} else {
// strong via browser crypto
}
}
干杯
汤姆
更新:我上面的回答只有在使用meteor版本时才正确,该版本显示了浏览器支持的crypto.getRandomValues()
Btw::在服务器上应该是相同的。如果不是alea,则使用节点加密。