当前位置:首页 > JavaScript

js 实现 salt

2026-04-05 17:02:13JavaScript

JavaScript 实现 Salt

在密码学中,Salt 是一串随机数据,用于增强哈希函数的安全性。通常与密码一起使用,防止彩虹表攻击。

生成随机 Salt

使用 crypto 模块生成随机 Salt:

const crypto = require('crypto');

function generateSalt(length = 16) {
  return crypto.randomBytes(length).toString('hex');
}

const salt = generateSalt();
console.log(salt); // 输出类似 '3a7f1b9c2e5d8f0a'

结合密码和 Salt 进行哈希

将 Salt 与密码结合后使用哈希算法:

function hashPassword(password, salt) {
  return crypto.pbkdf2Sync(password, salt, 10000, 64, 'sha512').toString('hex');
}

const password = 'userPassword123';
const hashedPassword = hashPassword(password, salt);
console.log(hashedPassword); // 输出哈希后的密码

验证密码

验证时需要原始 Salt 和哈希后的密码:

function verifyPassword(inputPassword, storedHash, storedSalt) {
  const inputHash = hashPassword(inputPassword, storedSalt);
  return inputHash === storedHash;
}

const isMatch = verifyPassword('userPassword123', hashedPassword, salt);
console.log(isMatch); // true 或 false

浏览器环境实现

在浏览器中可以使用 Web Crypto API:

js 实现 salt

async function generateBrowserSalt(length = 16) {
  const array = new Uint8Array(length);
  window.crypto.getRandomValues(array);
  return Array.from(array, byte => byte.toString(16).padStart(2, '0')).join('');
}

generateBrowserSalt().then(salt => {
  console.log(salt);
});

注意事项

Salt 长度建议至少 16 字节 每个用户应有唯一的 Salt Salt 需要与哈希值一起存储 避免使用 Math.random() 生成 Salt,安全性不足

标签: jssalt
分享给朋友:

相关文章

js实现计算器

js实现计算器

实现基础计算器功能 使用JavaScript创建一个基础计算器需要处理数字输入、运算符逻辑和结果显示。以下是一个简单的实现示例: let currentInput = '0'; let previo…

原生js实现轮播图

原生js实现轮播图

基本结构搭建 HTML部分需要包含轮播图容器、图片列表及导航按钮。结构示例如下: <div class="slider-container"> <div class="slid…

js 实现页面刷新

js 实现页面刷新

使用 location.reload() location.reload() 是原生 JavaScript 提供的页面刷新方法。调用该方法会重新加载当前页面,相当于点击浏览器的刷新按钮。 // 基本…

js 实现图片 放大

js 实现图片 放大

使用 CSS transform 实现图片放大 通过 CSS 的 transform: scale() 属性可以实现图片的平滑放大效果。结合 JavaScript 监听鼠标事件控制放大状态: con…

js验证码实现

js验证码实现

验证码的基本原理 验证码(CAPTCHA)用于区分人类用户和自动化程序。常见类型包括图形验证码、滑动验证码、短信验证码等。JavaScript 可用于前端验证码的生成和验证逻辑。 图形验证码实现 使…

js实现隐藏div

js实现隐藏div

隐藏div的几种方法 使用JavaScript隐藏div元素可以通过多种方式实现,以下是几种常见的方法: 方法一:修改style.display属性 将div的display属性设置为"none"…