window.crypto
window.crypto 是一个在现代浏览器中可用的 Web API,提供基本的加密功能。
主要功能
1. 加密安全的随机数生成
// 生成随机值
const array = new Uint32Array(10);
window.crypto.getRandomValues(array);
console.log(array); // 加密安全的随机数2. UUID 生成(现代浏览器)
// 生成随机 UUID
const uuid = crypto.randomUUID();
console.log(uuid); // 例如:"f47ac10b-58cc-4372-a567-0e02b2c3d479"3. Subtle Crypto(高级加密操作)
// 访问更高级的加密功能
const subtle = window.crypto.subtle;
// 用于哈希、加密、签名等常见用途
生成随机令牌
function generateRandomToken(length = 32) {const array = new Uint8Array(length);window.crypto.getRandomValues(array);return Array.from(array, byte => byte.toString(16).padStart(2, '0')).join('');
}const token = generateRandomToken(); // 64字符的十六进制字符串生成安全密码
function generateSecurePassword(length = 12) {const charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*";const array = new Uint8Array(length);window.crypto.getRandomValues(array);let password = "";for (let i = 0; i < length; i++) {password += charset[array[i] % charset.length];}return password;
}浏览器兼容性
广泛支持 所有现代浏览器
IE 11 部分支持(没有
randomUUID())在 Web Workers 中可用为
crypto(没有window.前缀)
重要注意事项
在 Node.js 中不可用 - 使用
crypto模块代替安全性:提供加密安全的随机性(与
Math.random()不同)限制:
getRandomValues()有大小限制(因浏览器而异)
Node.js 中的等价用法
// 在 Node.js 中,使用 crypto 模块
const crypto = require('crypto');// 等价操作
const randomBytes = crypto.randomBytes(32);
const uuid = crypto.randomUUID();window.crypto API 对于任何需要在浏览器中直接进行安全随机数生成或基本加密操作的 Web 应用程序至关重要。
