当前位置:首页 > JavaScript

js 实现 salt

2026-03-13 22:49:01JavaScript

生成随机 Salt

在JavaScript中生成salt通常使用加密安全的随机数生成器。crypto.getRandomValues()是浏览器环境中常用的方法,适合生成高熵值的salt。

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

Node.js 环境生成 Salt

Node.js环境下可使用crypto模块的randomBytes方法,该方法专为加密操作设计:

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

Salt 的存储与使用

生成的salt需要与哈希后的密码一起存储。典型格式为[salt]:[hashed_password],验证时需重新提取salt进行哈希计算:

// 存储示例
const salt = generateSalt();
const hashedPassword = sha256(password + salt);
const storedValue = `${salt}:${hashedPassword}`;

// 验证示例
const [extractedSalt, storedHash] = storedValue.split(':');
const computedHash = sha256(inputPassword + extractedSalt);
const isValid = computedHash === storedHash;

注意事项

  • 长度建议:salt长度至少16字节(32位十六进制字符),关键系统建议32字节。
  • 避免复用:每个用户/每次密码更改都应生成新salt。
  • 编码格式:十六进制(hex)或Base64是常见存储格式,避免直接存储二进制数据。

前端与后端的协作

纯前端salt生成存在安全局限,建议:

js 实现 salt

  1. 前端生成临时salt用于传输过程保护
  2. 后端最终存储时使用服务端生成的salt
  3. 双层哈希可结合客户端与服务端salt增强安全性

标签: jssalt
分享给朋友:

相关文章

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

js节流实现

js节流实现

节流的概念 节流(Throttle)是一种限制函数执行频率的技术,确保函数在一定时间间隔内只执行一次。常用于滚动事件、窗口调整等高频触发的场景。 基础实现方法 使用时间戳判断是否执行函数:…

js实现上传图片

js实现上传图片

使用HTML5的File API实现图片上传 HTML5的File API允许通过JavaScript访问用户选择的文件。需要创建一个文件输入元素,并监听其change事件。 <input t…

js实现截图

js实现截图

使用HTML2Canvas库实现截图 HTML2Canvas是一个流行的JavaScript库,可以将网页元素或整个页面转换为Canvas图像。安装方式: npm install html2canv…

js实现刷新

js实现刷新

刷新当前页面 使用 location.reload() 方法可以强制刷新当前页面。该方法接受一个布尔参数,默认为 false,表示从缓存中加载页面;设为 true 时强制从服务器重新加载。 // 从…

js实现点击效果

js实现点击效果

实现点击效果的JavaScript方法 使用addEventListener绑定点击事件 通过document.getElementById或document.querySelector获取DOM元素…