当前位置:首页 > JavaScript

js 实现 salt

2026-02-01 00:41:07JavaScript

生成 Salt 的方法

在 JavaScript 中生成 salt(盐值)通常用于密码加密或哈希过程中,以增强安全性。以下是几种常见的实现方式:

使用 crypto 模块生成随机 salt Node.js 的 crypto 模块提供了生成随机字节的方法,适合用于生成 salt。

js 实现 salt

const crypto = require('crypto');
const salt = crypto.randomBytes(16).toString('hex');

使用 window.crypto 在浏览器环境中生成 salt 浏览器端可以通过 window.crypto.getRandomValues 生成随机 salt。

js 实现 salt

const array = new Uint8Array(16);
window.crypto.getRandomValues(array);
const salt = Array.from(array, byte => byte.toString(16).padStart(2, '0')).join('');

生成固定长度的字符串作为 salt 如果需要简单的字符串 salt,可以通过拼接随机字符实现。

const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
let salt = '';
for (let i = 0; i < 16; i++) {
  salt += chars.charAt(Math.floor(Math.random() * chars.length));
}

Salt 的使用场景

Salt 主要用于密码存储或数据传输时与原始数据结合,防止彩虹表攻击。例如,在 bcrypt 哈希中:

const bcrypt = require('bcrypt');
const saltRounds = 10;
const plainPassword = 'user123';
bcrypt.genSalt(saltRounds, function(err, salt) {
  bcrypt.hash(plainPassword, salt, function(err, hash) {
    // 存储 hash 和 salt
  });
});

注意事项

  • Salt 应为每个用户唯一,避免重复使用。
  • Salt 长度建议至少 16 字节(128 位)。
  • 避免使用时间戳或简单序列作为 salt,确保其不可预测性。

标签: jssalt
分享给朋友:

相关文章

js实现文件下载

js实现文件下载

使用 a 标签下载文件 通过动态创建 a 标签并设置 download 属性实现文件下载。适用于已知文件 URL 或 Blob 数据的情况。 function downloadFile(url, f…

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('image…

js实现瀑布流

js实现瀑布流

实现瀑布流布局 瀑布流布局是一种常见的网页布局方式,常用于图片展示、商品列表等场景。以下是使用 JavaScript 实现瀑布流布局的几种方法。 纯 JavaScript 实现 通过计算元素的位置和…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: const…

js实现正交

js实现正交

正交的概念 正交在数学和计算机科学中通常指两个向量垂直或线性无关。在编程中,正交性常被用于设计模块化、低耦合的系统。 向量正交判断 判断两个向量是否正交可以通过点积是否为0来实现: functio…

js实现代码雨

js实现代码雨

实现代码雨效果 使用HTML5 Canvas和JavaScript可以轻松实现经典的代码雨效果。以下是完整的实现代码和说明: HTML结构 <!DOCTYPE html> <…