美文网首页
1.4 MAC系列算法

1.4 MAC系列算法

作者: saillen | 来源:发表于2018-11-28 17:55 被阅读0次

信息摘要技术 - MAC系列

MAC算法综合了MD和SHA算法的特性,和MD、SHA算法类似,学名:密钥散列消息认证码,严格写法应该:Hmac-XXX算法。MAC算法支持密钥,因此不需要在使用salt方式,
但是这里要注意密钥不同于密码,salt更偏向于密码,更容易使用,密钥要经过特殊的构造,密钥在不同算法里面是要不同长度/构造方法的要求的。

MAC算法家族发展历史

MAC算法是含有密钥的散列算法,兼容MD和SHA算法,在此基础上添加了密钥支持,因此也被称为Hmac算法,定义在RFC 2014中,分为两大分支MD和SHA分支:

  • MD分支:Hmac-MD2、Hmac-MD4、Hmac-MD5;
  • SHA分支:Hmac-SHA1、Hmac-SHA256、Hmac-SHA384、Hmac-SHA512、Hmac-SHA224等;

应用场景

MAC算法应用场景也可用在MD和SHA场景下,不过其更多的被用在密钥交换上:

  • AB双方公布MAC算法;
  • A公布密钥给B;
  • A使用密钥对消息做摘要后,发送摘要给B;
  • B收到消息,使用密钥对数据做摘要验证是否一致;

MAC的应用更类似现在的MD5 加 Salt方式,但是更安全。

Java中算法实现

算法 摘要长度(位) 备注
Hmac-MD5 128 JDK 6提供
Hmac-SHA1 160 JDK 6提供
Hmac-SHA256 256 JDK 6提供
Hmac-SHA384 384 JDK 6提供
Hmac-SHA512 512 JDK 6提供
Hmac-MD2 128 Bouncy Castle实现
Hmac-MD4 128 Bouncy Castle实现
Hmac-SHA224 224 Bouncy Castle实现

MAC算法的使用,使用MAC类,MAC类要求调用初始化init()方法的时候设置一个密钥,<b>这个密钥是有长度要求的</b>,大部分情况下使用KeyGenerator类来产生,KeyGenerator可以根据传入的算法,产生适合算法要求的密钥长度的秘钥,示例代码如下:

public class MACTest {

    public static void main(String[] args) throws NoSuchAlgorithmException, InvalidKeyException {
        // 产生一个密钥,MAC的密钥加密时有一定长度要求,可以手动自己按照规定长度产生一个,但是不建议使用
        KeyGenerator keyGen = KeyGenerator.getInstance("HmacMD5");
        SecretKey secretKey = keyGen.generateKey();
        byte[] key = secretKey.getEncoded();

        // 接收方接受密钥后进行信息摘要
        String input = "test";
        SecretKey sKey = new SecretKeySpec(key, "HmacMD5");
        Mac mac = Mac.getInstance("HmacMD5");
        mac.init(sKey);
        byte[] sData = mac.doFinal(input.getBytes());
        System.out.println(new String(HexBin.encode(sData)));
    }

}

相关文章

  • 1.4 MAC系列算法

    信息摘要技术 - MAC系列 MAC算法综合了MD和SHA算法的特性,和MD、SHA算法类似,学名:密钥散列消息认...

  • 1.Laravel环境搭建—Mac + Php + Nginx

    目录 1.1 Mac PHP 升级 1.2 Mac Nginx 安装 1.3 Laravel安装 1.4 打通环境...

  • JAVA加解密4-消息摘要算法的简单汇总

    1、消息摘要算法包含 MD,SHA,MAC三大系列。经常用来验证数据的完整性。是数字签名的核心算法 2、算法体系光...

  • JAVA加解密9-信息摘要算法-RipeMD以及HmacRipe

    一、简述除了MD、SHA和MAC三大主流信息摘要算法之外,还有一些不常见的消息摘要算法。包括RipeMD系列、Ti...

  • JVM知识点汇总

    1.垃圾回收机制1.1 标记 - 清除算法1.2 标记 - 整理算法1.3 复制算法1.4 分代收集算法zxc2....

  • 1.4 算法分析

    T(N)=aN^b 幂次法则 三 数学模型 一个程序运行的总时间主要与两点有关: 执行每条语句的耗时; ...

  • 1.4 算法和算法分析

    算法(algorithm)是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作;此...

  • DBA(MySQL)学习-索引及执行计划

    1.索引 1.1 作用 1.2 索引的种类(算法) 1.3 B树算法普及 1.4 在功能上的分类 1.4.1 辅助...

  • 1.2 MD系列算法

    信息摘要算法 - MD系列算法 MD系列算法是信息摘要三大算法中的一种,全称:Message Digest算法,按...

  • 几个常用算法

    Base64 HASH算法 非对称加密算法 Mac openssl

网友评论

      本文标题:1.4 MAC系列算法

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