MAC(Message Authentication Code ,消息认证码算法)是含有密钥散列函数算法,兼容MD和SHA算法的特性,并在此基础上加入了密钥。因此,MAC也称为HMAC。

        MAC算法集合了MD和SHA两大系列消息摘要算法。MD系列有HmacMD2、HmacMD4、HmacMD5三种算法。SHA系列的有HmacSHA1、HmacSHA224、HmacSHA256、HmacSHA384、HmacSHA512这五种算法。MAC算法摘要值的长度与具体的摘要算法的长度一直。
如HmacMD5即使对应MD5算法的摘要值长度128位。具体如下:


MAC算法的实现
1、Java 自带类实现 
      注意:Java自动类仅支持HmacMD5、HmacSHA1、HmacSHA256、HmacSHA384、HmacSHA512这几种算法
      Mac算法是带有密钥的消息摘要算法,所以其实现分两步
      1)创建密钥
      2)获得消息摘要
      具体实现代码如下:
       /**
         *1、创建密钥
         */
        
        //创建对应摘要算法(如MD5\SHA1\SHA256等)密钥生成器对象KeyGenerator
        KeyGenerator keyGenerator = KeyGenerator.getInstance("HmacMD5");
        
        //产生密钥
        SecretKey secretKey = keyGenerator.generateKey();
        
        //得到密钥的字节数组
        //byte[] key = secretKey.getEncoded();
        
        /**
         * 2、根据密钥产生mac摘要
         */
        
        //创建对应摘要算法(如MD5\SHA1\SHA256等)的Mac实例对象
        Mac mac = Mac.getInstance(secretKey.getAlgorithm());
        
        //初始化该mac实例对象的密钥
        mac.init(secretKey);
        
        //获取mac摘要信息
        byte[]result = mac.doFinal("中国".getBytes());

System.out.println(toHexString(result));  




 

MAC信息摘要的更多相关文章

  1. 网络安全-安全散列函数,信息摘要SHA-1,MD5原理

    -----------------------------------------------欢迎查看网络安全连载博客-----------------------------------[网络安全] ...

  2. 【转】java MessageDigest类的作用 :提供信息摘要 算法( MD5 或 SHA 等)的功能

    一.结构和概述: java.lang.Object java.security.MessageDigestSpi java.security.MessageDigest 声明:public abstr ...

  3. PHP的Hash信息摘要扩展框架

    今天我们主要学习的是 PHP 中一些 Hash 散列加密相关的扩展函数的使用,而不是 Hash 算法,这种加密其实也只是一种更复杂一些的密钥算法,与 Hash 算法类似的是,我们输入的一串字符串,就像 ...

  4. 信息加密之信息摘要加密MD2、MD4、MD5

    对于用户数据的保密一直是各个互联网企业头疼的事,那如何防止用户的个人信息泄露呢?今天为大家介绍一种最简单的加密方式--信息摘要算法MD.它如何来保护用户的个人信息呢?其实很简单,当获得到用户的信息后, ...

  5. SHA信息摘要

    SHA算法是在MD4的基础上演进而来的,通过SHA算法能够获得一个固定长度的摘要信息.   SHA算法系列有SHA-1(也成为SHA),SHA-224,SHA-256,SHA-384和SHA-512这 ...

  6. Java之加密(信息摘要)工具类(依赖:java.security.MessageDigest或org.apache.commons.codec.digest.DigestUtils)

    依赖于java.security.MessageDigest,支持MD5,SHA-1,SHA-256 import java.security.MessageDigest; import java.s ...

  7. java获取来访者mac信息

    根据IP获取对应的Mac地址,支持win10+Linux package com.simonjia.util.other; /** * @Author: SimonHu * @Date: 2019/6 ...

  8. python实现获取系统版本和mac信息上传到指定接口

    import os,platform,uuid,urllib.parse,urllib.request,json def BeforeSystemRequests(): ''' the systemi ...

  9. 第四周LINUX 学习笔记

    内核编译丶sed丶awk Linux:单内核    模块化:动态      /lib/modules      lsmod,modinfo,modprobe,insmod,,modprobe -r , ...

随机推荐

  1. sqlserver 调试WINDBG ---troubleshootingsql.com

    https://troubleshootingsql.com/tag/stack-dump/ Debugging that latch timeout Posted on August 26, 201 ...

  2. Ado.Net基础拾遗一:读取数据

    从数据库中读取数据: 使用DataReader对象从数据库中读取数据 首先需要添加几个命名空间 //需要添加的命名空间 using System.Configuration; using System ...

  3. verynginx +nginx_upstream_check_module模块,负载均衡检查模块。

    yum -y install git yum -y install patch yum -y install pcre-devel yum install -y zlib-devel   mkdir ...

  4. git如何打补丁?

    git cherry-pick 可以把某个分支的某几次提交合入到当前分支,只是在一台设备上操作. git format-patch 可以把某个分支的n次提交分别打成n个补丁,然后把这些补丁文件(比如0 ...

  5. javascript快速入门24--XML基础

    XML简介 XML代表Extensible Markup Language(eXtensible Markup Language的缩写,意为可扩展的标记语言).XML 被设计用来传输和存储数据.XML ...

  6. 【JavaScript】Bootstrap3-dialog挺好用

    参考资料: http://stackoverflow.com/questions/28436634/getting-error-uncaught-referenceerror-bootstrapdia ...

  7. subscription group permisson

  8. uva 11584 Partitioning by Palindromes 线性dp

    // uva 11584 Partitioning by Palindromes 线性dp // // 题目意思是将一个字符串划分成尽量少的回文串 // // f[i]表示前i个字符能化成最少的回文串 ...

  9. Windows如何自定义U盘盘符、文件夹图标、文件夹背景

    自定义U盘盘符.文件夹图标.文件夹背景 注意对于Vista和Win7的用户不支持文件夹图标和文件夹背景的更换 1.自定义盘符:在U盘根目录下新建文件 autorun.inf(可先建.txt文本文档,再 ...

  10. 三位一体的漏洞分析方法-web应用安全测试方法

    本文转自乌云知识库 0x00 前言 节选自: http://www.owasp.org.cn/OWASP_Conference/owasp-20140924/02OWASPWeb20140915.pd ...