HMAC在线加密核心JS实现

简介: 本文介绍基于crypto-js的HMAC在线加密工具JS实现,支持MD5、SHA-1/2/3、RIPEMD160等10种HMAC算法;密钥可选文本/Hex/Base64格式,结果输出Hex或Base64;全程浏览器端计算,安全高效。

HMAC在线加密核心JS实现

本文介绍 HMAC 在线加密工具的核心 JavaScript 实现方案,基于 crypto-js 库实现多种哈希算法的 HMAC 计算。

在线工具网址:https://see-tool.com/hmac-encryptor
工具截图:
在这里插入图片描述

算法支持

工具支持以下 HMAC 算法:

分组 算法
Common HMAC-MD5
SHA-1 HMAC-SHA1
SHA-2 HMAC-SHA224、HMAC-SHA256、HMAC-SHA384、HMAC-SHA512
SHA-3 HMAC-SHA3
Other HMAC-RIPEMD160

核心实现

算法定义

const algorithms = [
    {
    value: 'HMAC-MD5', label: 'HMAC-MD5', group: 'Common' },
    {
    value: 'HMAC-SHA1', label: 'HMAC-SHA1', group: 'SHA-1' },
    {
    value: 'HMAC-SHA224', label: 'HMAC-SHA224', group: 'SHA-2' },
    {
    value: 'HMAC-SHA256', label: 'HMAC-SHA256', group: 'SHA-2' },
    {
    value: 'HMAC-SHA384', label: 'HMAC-SHA384', group: 'SHA-2' },
    {
    value: 'HMAC-SHA512', label: 'HMAC-SHA512', group: 'SHA-2' },
    {
    value: 'HMAC-SHA3', label: 'HMAC-SHA3', group: 'SHA-3' },
    {
    value: 'HMAC-RIPEMD160', label: 'HMAC-RIPEMD160', group: 'Other' }
];

密钥格式处理

工具支持三种密钥输入格式:文本、十六进制、Base64。

let processedKey = key;

if (keyFormat === 'hex') {
   
    // 清理十六进制字符串,移除空格和 0x 前缀
    const cleanedKey = key.replace(/[\s,0x]/gi, '');
    // 校验是否为有效的十六进制字符
    if (!/^[0-9a-fA-F]*$/.test(cleanedKey)) {
   
        throw new Error('Invalid Hex key characters');
    }
    // 解析为 CryptoJS WordArray
    processedKey = window.CryptoJS.enc.Hex.parse(cleanedKey);
} else if (keyFormat === 'base64') {
   
    try {
   
        processedKey = window.CryptoJS.enc.Base64.parse(key);
    } catch (e) {
   
        throw new Error('Invalid Base64 key');
    }
}
// text 格式直接使用字符串,crypto-js 会自动处理

HMAC 计算

根据选择的算法调用对应的 CryptoJS 方法:

let hmacResult;

switch (algorithm) {
   
    case 'HMAC-MD5':
        hmacResult = window.CryptoJS.HmacMD5(message, processedKey);
        break;
    case 'HMAC-SHA1':
        hmacResult = window.CryptoJS.HmacSHA1(message, processedKey);
        break;
    case 'HMAC-SHA224':
        hmacResult = window.CryptoJS.HmacSHA224(message, processedKey);
        break;
    case 'HMAC-SHA256':
        hmacResult = window.CryptoJS.HmacSHA256(message, processedKey);
        break;
    case 'HMAC-SHA384':
        hmacResult = window.CryptoJS.HmacSHA384(message, processedKey);
        break;
    case 'HMAC-SHA512':
        hmacResult = window.CryptoJS.HmacSHA512(message, processedKey);
        break;
    case 'HMAC-SHA3':
        hmacResult = window.CryptoJS.HmacSHA3(message, processedKey);
        break;
    case 'HMAC-RIPEMD160':
        hmacResult = window.CryptoJS.HmacRIPEMD160(message, processedKey);
        break;
    default:
        hmacResult = window.CryptoJS.HmacSHA256(message, processedKey);
}

输出格式转换

计算结果支持十六进制和 Base64 两种输出格式:

if (outputFormat === 'base64') {
   
    return hmacResult.toString(window.CryptoJS.enc.Base64);
}

return hmacResult.toString(window.CryptoJS.enc.Hex);

完整函数

const calculateHmac = (message, key, algorithm, keyFormat = 'text', outputFormat = 'hex') => {
   
    if (!message) throw new Error('Message is required');

    // 处理密钥格式
    let processedKey = key;
    if (keyFormat === 'hex') {
   
        const cleanedKey = key.replace(/[\s,0x]/gi, '');
        if (!/^[0-9a-fA-F]*$/.test(cleanedKey)) {
   
            throw new Error('Invalid Hex key characters');
        }
        processedKey = window.CryptoJS.enc.Hex.parse(cleanedKey);
    } else if (keyFormat === 'base64') {
   
        try {
   
            processedKey = window.CryptoJS.enc.Base64.parse(key);
        } catch (e) {
   
            throw new Error('Invalid Base64 key');
        }
    }

    // 计算 HMAC
    let hmacResult;
    switch (algorithm) {
   
        case 'HMAC-MD5': hmacResult = window.CryptoJS.HmacMD5(message, processedKey); break;
        case 'HMAC-SHA1': hmacResult = window.CryptoJS.HmacSHA1(message, processedKey); break;
        case 'HMAC-SHA224': hmacResult = window.CryptoJS.HmacSHA224(message, processedKey); break;
        case 'HMAC-SHA256': hmacResult = window.CryptoJS.HmacSHA256(message, processedKey); break;
        case 'HMAC-SHA384': hmacResult = window.CryptoJS.HmacSHA384(message, processedKey); break;
        case 'HMAC-SHA512': hmacResult = window.CryptoJS.HmacSHA512(message, processedKey); break;
        case 'HMAC-SHA3': hmacResult = window.CryptoJS.HmacSHA3(message, processedKey); break;
        case 'HMAC-RIPEMD160': hmacResult = window.CryptoJS.HmacRIPEMD160(message, processedKey); break;
        default: hmacResult = window.CryptoJS.HmacSHA256(message, processedKey);
    }

    // 输出格式转换
    if (outputFormat === 'base64') {
   
        return hmacResult.toString(window.CryptoJS.enc.Base64);
    }
    return hmacResult.toString(window.CryptoJS.enc.Hex);
};

小结

整个实现的核心在于:

  1. 密钥格式处理:支持文本、十六进制、Base64 三种输入格式,使用 CryptoJS 的编码器进行解析
  2. 算法路由:通过 switch 语句根据算法名称调用对应的 HMAC 函数
  3. 输出转换:将计算结果转换为十六进制或 Base64 字符串输出

crypto-js 库提供了完整的 HMAC 实现,使用起来非常简洁。所有计算都在浏览器端完成,无需服务端参与,保证了安全性。

相关文章
|
21天前
|
人工智能 自然语言处理 Shell
🦞 如何在 OpenClaw (Clawdbot/Moltbot) 配置阿里云百炼 API
本教程指导用户在开源AI助手Clawdbot中集成阿里云百炼API,涵盖安装Clawdbot、获取百炼API Key、配置环境变量与模型参数、验证调用等完整流程,支持Qwen3-max thinking (Qwen3-Max-2026-01-23)/Qwen - Plus等主流模型,助力本地化智能自动化。
32817 128
🦞 如何在 OpenClaw (Clawdbot/Moltbot) 配置阿里云百炼 API
|
17天前
|
人工智能 安全 机器人
OpenClaw(原 Clawdbot)钉钉对接保姆级教程 手把手教你打造自己的 AI 助手
OpenClaw(原Clawdbot)是一款开源本地AI助手,支持钉钉、飞书等多平台接入。本教程手把手指导Linux下部署与钉钉机器人对接,涵盖环境配置、模型选择(如Qwen)、权限设置及调试,助你快速打造私有、安全、高权限的专属AI助理。(239字)
6973 20
OpenClaw(原 Clawdbot)钉钉对接保姆级教程 手把手教你打造自己的 AI 助手
|
15天前
|
人工智能 机器人 Linux
OpenClaw(Clawdbot、Moltbot)汉化版部署教程指南(零门槛)
OpenClaw作为2026年GitHub上增长最快的开源项目之一,一周内Stars从7800飙升至12万+,其核心优势在于打破传统聊天机器人的局限,能真正执行读写文件、运行脚本、浏览器自动化等实操任务。但原版全英文界面对中文用户存在上手门槛,汉化版通过覆盖命令行(CLI)与网页控制台(Dashboard)核心模块,解决了语言障碍,同时保持与官方版本的实时同步,确保新功能最快1小时内可用。本文将详细拆解汉化版OpenClaw的搭建流程,涵盖本地安装、Docker部署、服务器远程访问等场景,同时提供环境适配、问题排查与国内应用集成方案,助力中文用户高效搭建专属AI助手。
4940 12
|
18天前
|
人工智能 机器人 Linux
保姆级 OpenClaw (原 Clawdbot)飞书对接教程 手把手教你搭建 AI 助手
OpenClaw(原Clawdbot)是一款开源本地AI智能体,支持飞书等多平台对接。本教程手把手教你Linux下部署,实现数据私有、系统控制、网页浏览与代码编写,全程保姆级操作,240字内搞定专属AI助手搭建!
5766 22
保姆级 OpenClaw (原 Clawdbot)飞书对接教程 手把手教你搭建 AI 助手
|
4天前
|
人工智能 自然语言处理 监控
OpenClaw skills重构量化交易逻辑:部署+AI全自动炒股指南(2026终极版)
2026年,AI Agent领域最震撼的突破来自OpenClaw(原Clawdbot)——这个能自主规划、执行任务的智能体,用50美元启动资金创造了48小时滚雪球至2980美元的奇迹,收益率高达5860%。其核心逻辑堪称教科书级:每10分钟扫描Polymarket近千个预测市场,借助Claude API深度推理,交叉验证NOAA天气数据、体育伤病报告、加密货币链上情绪等多维度信息,捕捉8%以上的定价偏差,再通过凯利准则将单仓位严格控制在总资金6%以内,实现低风险高频套利。
1404 6

热门文章

最新文章