HMAC/PBKDF2加密
在线HMAC与PBKDF2加密工具,支持HMAC-SHA1/SHA256/SHA384/SHA512/MD5五种消息认证码算法,以及PBKDF2密钥派生函数。适用于API签名验证、密码存储、密钥派生等安全场景。
HMAC计算次数
0
PBKDF2计算次数
0
总计算次数
0
HMAC消息认证码
HMAC-MD5
128位
HMAC-SHA1
160位
HMAC-SHA256
256位
HMAC-SHA384
384位
HMAC-SHA512
512位
HMAC计算结果将显示在此处...
输入文本和密钥后点击「计算HMAC」按钮
PBKDF2密钥派生
PBKDF2计算结果将显示在此处...
输入参数后点击「计算PBKDF2」按钮
功能特性
HMAC五种算法
支持HMAC-MD5、HMAC-SHA1、HMAC-SHA256、HMAC-SHA384、HMAC-SHA512五种消息认证码算法,满足不同安全等级需求。
PBKDF2密钥派生
支持PBKDF2密钥派生函数,可配置盐值、迭代次数(1-100万+)和输出长度(1-512字节),适用于密码存储和密钥生成。
双模式切换
PBKDF2支持密钥派生模式(密码→密钥)和文本加密模式(文本→哈希),灵活适配不同使用场景。
盐值自定义
支持自定义盐值,增强密码安全性。不同盐值产生不同密钥,有效防止彩虹表攻击。
一键复制
HMAC和PBKDF2结果均支持一键复制到剪贴板,按钮即时反馈,Toast顶部居中弹跳提示。
安全本地
加密操作优先后端处理,失败自动回退浏览器本地SubtleCrypto API,不持久化数据。
使用说明
HMAC消息认证码
- 选择HMAC算法(推荐HMAC-SHA256)。
- 在「文本内容」输入框中输入要计算HMAC的消息文本。
- 在「密钥」输入框中输入用于HMAC计算的密钥。
- 点击「计算HMAC」按钮,结果将显示在下方结果区。
PBKDF2密钥派生
- 选择模式:密钥派生模式(密码→密钥)或文本加密模式(文本→哈希)。
- 输入密码或文本内容(根据所选模式)。
- 输入盐值(Salt),建议使用随机字符串。
- 设置迭代次数(推荐10000次以上,越高越安全但计算越慢)。
- 设置输出长度(字节,推荐32字节=256位)。
- 点击「计算PBKDF2」按钮,结果将显示在下方结果区。
HMAC与PBKDF2的区别
- HMAC(Hash-based Message Authentication Code):基于哈希函数的消息认证码,用于验证消息的完整性和真实性。需要密钥参与计算,适合API签名验证。
- PBKDF2(Password-Based Key Derivation Function 2):基于密码的密钥派生函数,通过多次迭代哈希将密码转为密钥。内置盐值和迭代次数,适合密码存储和密钥生成。
- 核心区别:HMAC是单次哈希计算(快),PBKDF2是多次迭代计算(慢,抗暴力破解)。HMAC用于消息认证,PBKDF2用于密码派生。
典型使用场景
- API签名验证:使用HMAC-SHA256对API请求参数签名,确保请求未被篡改(如AWS API、GitHub Webhook)。
- 密码存储:使用PBKDF2将用户密码派生为密钥后存储,加盐+高迭代次数抵抗暴力破解。
- 消息完整性:使用HMAC验证消息在传输过程中未被修改。
- 密钥生成:使用PBKDF2从用户密码派生加密密钥,用于AES等对称加密。
- JWT签名:JWT的HS256算法本质就是HMAC-SHA256。
- 会话Token:使用HMAC生成会话Token,确保Token不可伪造。
常见问题
HMAC和普通哈希(SHA256)有什么区别?
普通哈希(如SHA256)不需要密钥,任何人都可以计算,只能验证数据完整性。HMAC需要密钥参与计算,只有持有密钥的人才能生成和验证,可以同时验证数据完整性和身份认证。例如,用SHA256可以知道数据是否被修改,但无法知道是谁发送的;用HMAC-SHA256既能验证数据未被修改,也能确认发送者持有正确的密钥。
PBKDF2的迭代次数设多少合适?
迭代次数越高越安全,但计算越慢。推荐值:1)最低10000次(OWASP 2023年建议最低);2)推荐600000次(OWASP 2023年建议值,针对PBKDF2-SHA256);3)实际应根据服务器性能调整,目标使单次计算耗时约250-500毫秒。注意:迭代次数应随硬件性能提升而定期增加。
盐值(Salt)有什么作用?怎么生成?
盐值是添加到密码中的随机字符串,作用:1)防止彩虹表攻击——相同密码因不同盐值产生不同密钥;2)防止相同密码被识别——数据库中看不到重复密钥。盐值生成建议:使用加密安全随机数生成器(如
crypto.randomBytes(16)),长度至少16字节(32个十六进制字符),每个用户使用独立的随机盐值。盐值不需要保密,可以明文存储。
PBKDF2和bcrypt/Argon2哪个更好?
安全性排序:Argon2 > bcrypt > PBKDF2。PBKDF2是NIST标准,兼容性最好但安全性较低(对GPU/ASIC攻击抵抗力弱)。bcrypt内置盐值和工作因子,对GPU攻击有较好抵抗力。Argon2是密码哈希竞赛冠军,同时抵抗GPU和内存攻击,是最推荐的密码哈希算法。如果系统支持,优先使用Argon2;兼容性要求高时使用PBKDF2。
HMAC-SHA256和JWT的HS256是什么关系?
JWT(JSON Web Token)的HS256算法就是HMAC-SHA256。JWT签名时,将Header和Payload用Base64URL编码后用点号连接,然后使用密钥对整个字符串计算HMAC-SHA256,得到的哈希值就是JWT的Signature部分。所以本工具可以直接用于验证和生成JWT的HS256签名。
本工具是免费的吗?数据会被存储吗?
完全免费,无需注册登录。HMAC计算通过后端API处理,PBKDF2优先后端计算。所有数据仅在请求过程中传输,不会被持久化存储。后端不可用时,HMAC可回退到浏览器本地SubtleCrypto API计算,确保功能始终可用。