如何使用window.crypto属性正确生成随机密码?

问题描述 投票:0回答:2

生成随机数的

Math.floor(Math.random() * 100)
Math.ceil(Math.random() * 100)
方法并不是最安全的加密方法。我想在随机密码应用程序中使用此方法,我正在尝试使用 window.crypto 属性。这是我设置的,但它似乎返回一个空值,我不确定我做错了什么。

const array = new Uint32Array(1);
window.crypto.getRandomValues(array);

let chars = '0123456789abcdefghijklmnopqrstuvwxyz!@#$%^&*()ABCDEFGHIJKLMNOPQRSTUVWXYZ';
let pwordLength = 12;
let password = '';

for (let i = 0; i <= pwordLength; i++) {
  let randomNumber = array * chars.length;
  password += chars.substring(randomNumber, randomNumber + 1);
}
console.log(`Password is ${password}`);

javascript random window.crypto
2个回答
4
投票

您可以生成与

Uint32Array
列表长度相同的
chars
。然后循环它们以获得随机值。通过使用
%
,我们可以确保永远不会超过给定的长度(余数运算符

let chars = '0123456789abcdefghijklmnopqrstuvwxyz!@#$%^&*()ABCDEFGHIJKLMNOPQRSTUVWXYZ';
let pwordLength = 12;
let password = '';

const array = new Uint32Array(chars.length);
window.crypto.getRandomValues(array);

for (let i = 0; i < pwordLength; i++) {
  password += chars[array[i] % chars.length];
}


console.log(`Password is ${password}`);


0
投票

除了使用 % 之外,你还能做什么?

© www.soinside.com 2019 - 2024. All rights reserved.