美文网首页
[ 摘要 ] HMAC - MD5遇到彩虹表怎么办?

[ 摘要 ] HMAC - MD5遇到彩虹表怎么办?

作者: 一个好汉 | 来源:发表于2021-08-31 00:14 被阅读0次

HMAC 你是谁

HMAC 又称哈希运算消息认证码
运算利用 哈希算法 (MD5、SHA1 等),输入密钥和消息,生成消息摘要
HMAC 发送方和接收方只有拥有认证码也就是秘钥方能进行认证。

类型

MAC算法可选以下多种算法

  • HmacMD5
  • HmacSHA1
  • HmacSHA256
  • HmacSHA384
  • HmacSHA512

这里以 HmacMD5 为例

HmacMD5作用

  1. HmacMD5使用的key长度是64字节,更安全;
  2. Hmac是标准算法,同样适用于SHA-1等其他哈希算法;
  3. Hmac输出和原有的哈希算法长度一致。

coding

import lombok.extern.slf4j.Slf4j;

import javax.crypto.Mac;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;

/**
 * hmac 帮助类
 * HMAC 算法实例mac在多线程环境下是不安全的。需要在多线程访问时,使用ThreadLocal为每个线程缓存一个实例可解决
 */
@Slf4j
public class HMacHelper {
    private Mac mac;

    /**
     * MAC算法可选以下多种算法
     * HmacMD5/HmacSHA1/HmacSHA256/HmacSHA384/HmacSHA512
     */
    private static final String KEY_MAC = "HmacMD5";

    /**
     * 构造秘钥 获取摘要算法实例
     */
    public HMacHelper(String key) {
        try {
            SecretKey secretKey = new SecretKeySpec(key.getBytes(StandardCharsets.UTF_8), KEY_MAC);
            mac = Mac.getInstance(secretKey.getAlgorithm());
            mac.init(secretKey);
        } catch (NoSuchAlgorithmException | InvalidKeyException e) {
            log.info("init HMacHelper failed", e);
        }
    }

    /**
     * 获取签名
     */
    public byte[] sign(byte[] content) {
        return mac.doFinal(content);
    }

    /**
     * 验证签名是否正确
     */
    public boolean verify(byte[] signature, byte[] content) {
        byte[] result = mac.doFinal(content);
        return Arrays.equals(signature, result);
    }
}


参考

零壹技术栈
Hmac算法

相关文章

  • [ 摘要 ] HMAC - MD5遇到彩虹表怎么办?

    HMAC 你是谁 HMAC 又称哈希运算消息认证码运算利用 哈希算法 (MD5、SHA1 等),输入密钥和消息,生...

  • Golang标准库——crypto(2)

    hmac md5 rand rc4 rsa sha1 sha256 sha512 subtle hmac hmac...

  • java加密策略

    信息摘要算法 MD5 SHA HMAC\SM3 散列消息鉴别码,基于密钥的Hash算法的认证协议 对称加密 DES...

  • 签名

    签名MD5、SHA1、SHA256、SHA512、HMAC实现

  • iOS常见信息加密方式总结

    目录 MD5加密HMAC加密base64加密对称加密RSA加密 - 非对称加密 一.MD5加密 MD5加密是最常用...

  • 02常见的安全处理机制_MD5

    单向散列函数 MD5|SHA1|SHA256|SHA512等● 消息认证码 HMAC-MD5|HMAC-SHA...

  • 主流加密方式

    cipher aes des md5 sha256 dsa ecdsa elliptic hmac rand rc...

  • MD5 + salt

    MD5加密的数据泄露出去依然可以被破解(反查彩虹表)。 两次MD5 用户端:PASS = MD5(明文+固定sal...

  • MD5(MD5 消息摘要算法)

    MD5(MD5 消息摘要算法) MD5 简介 MD5 消息摘要算法(MD5 Message-Digest Algo...

  • crypto/md5

    Go标准库crypto包提供了加密解密、签名验签、HMAC、OpenSSL哈希等一整套封装。 MD5 MD5全称M...

网友评论

      本文标题:[ 摘要 ] HMAC - MD5遇到彩虹表怎么办?

      本文链接:https://www.haomeiwen.com/subject/kshgiltx.html