当前位置:首页 > JavaScript

js实现mac

2026-04-06 11:19:19JavaScript

实现 MAC(消息认证码)的 JavaScript 方法

在 JavaScript 中实现 MAC(Message Authentication Code)通常需要使用加密库或原生 API。以下是两种常见的方法:

使用 Web Crypto API(浏览器环境)

Web Crypto API 是现代浏览器提供的原生加密接口,支持 HMAC(Hash-based MAC)算法:

js实现mac

async function generateHMAC(message, secretKey) {
  const encoder = new TextEncoder();
  const messageBuffer = encoder.encode(message);
  const keyBuffer = encoder.encode(secretKey);

  const cryptoKey = await window.crypto.subtle.importKey(
    'raw',
    keyBuffer,
    { name: 'HMAC', hash: 'SHA-256' },
    false,
    ['sign']
  );

  const signature = await window.crypto.subtle.sign(
    'HMAC',
    cryptoKey,
    messageBuffer
  );

  return Array.from(new Uint8Array(signature))
    .map(b => b.toString(16).padStart(2, '0'))
    .join('');
}

使用 Node.js 的 crypto 模块

在 Node.js 环境中可以使用内置的 crypto 模块:

js实现mac

const crypto = require('crypto');

function generateHMAC(message, secretKey) {
  return crypto
    .createHmac('sha256', secretKey)
    .update(message)
    .digest('hex');
}

注意事项

  • 密钥长度应足够长(推荐至少 32 字节)
  • 选择适当的哈希算法(如 SHA-256)
  • 浏览器环境中 Web Crypto API 仅支持 HTTPS 或 localhost
  • 存储密钥时应确保安全性

验证 MAC 的方法

验证 MAC 时只需重新计算 MAC 并与接收到的 MAC 比较:

async function verifyHMAC(message, receivedMAC, secretKey) {
  const calculatedMAC = await generateHMAC(message, secretKey);
  return calculatedMAC === receivedMAC;
}

其他 MAC 算法

除了 HMAC,还可以实现:

  • CMAC(基于分组密码)
  • Poly1305(通常与 ChaCha20 配合使用)

但这些算法在 JavaScript 中通常需要第三方库支持。

标签: jsmac
分享给朋友:

相关文章

js实现验证码

js实现验证码

实现验证码的JavaScript方法 生成随机验证码 使用Math.random()生成随机字符串,结合数字和字母: function generateCaptcha() { const cha…

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounce…

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:…

js实现报表

js实现报表

使用JavaScript实现报表 在JavaScript中实现报表功能可以通过多种方式完成,常见的方法包括使用原生JavaScript、第三方库(如Chart.js、D3.js)或结合后端数据渲染。以…

js实现tab选项卡切换

js实现tab选项卡切换

实现Tab选项卡切换的JavaScript方法 使用纯JavaScript实现Tab切换功能,可以通过监听点击事件动态切换内容显示状态。以下是两种常见实现方式: 基础DOM操作实现 // 获取所有…

js实现变形

js实现变形

使用 CSS 和 JavaScript 实现元素变形 在 JavaScript 中实现变形效果通常结合 CSS 的 transform 属性,通过动态修改该属性实现元素的旋转、缩放、倾斜或平移。 基…