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. Flex页面跳转的五种实现方式

    Flex页面跳转有很多值得学习的地方,本文向大家介绍一下Flex页面跳转的几种方式,主要包括五种方式,这里为大家一一介绍. AD:   在学习Flex的过程中,你可能会遇到Flex页面跳转的概念,这里 ...

  2. 玩转JavaScript正则表达式

    Why Regular Expression 我们先来看看,我们干哈要学正则表达式这玩意儿: 复杂的字符串搜寻.替换工作,无法用简单的方式(类似借助标准库函数)达成. 能够帮助你进行各种字符串验证. ...

  3. webpack导入es6的简单应用

    1.先全局安装babel的需要文件 npm install -g babel-cli npm install --save-dev babel-preset-es2015 babel-core bab ...

  4. Laravel 5 系列教程三:视图变量传递和Blade

    免费视频教程地址https://laravist.com/series/laravel-5-basic 上一篇我们简单地说了Router,Views和Controllers的工作流程,这一次我就按照上 ...

  5. CMA连续物理内存用户空间映射---(二)

    摘要: 相对于上一篇測试程序CMA连续物理内存用户空间映射---(一) 添加功能: 1.分配和映射统一放在IOCTL,一次完毕,能够连续多次分配并映射到用户空间,提高操作性: 2.驱动添加链表,使分配 ...

  6. JAVA加解密 -- Base64加解密

    Base64算法实现:可以将任意的字节数组数据,通过算法,生成只有(大小写英文.数字.+./)(一共64个字符)内容表示的字符串数据. private static final String str ...

  7. Centos 7 修改yum源为阿里源

    因为官方的yum源在国内访问效果不佳, 需要改为国内比较好的阿里云或者网易的yum源, 具体修改步骤如下: cd /etc/yum.repos.d # 备份旧的配置文件 mv CentOS-Base. ...

  8. Git——使用gitignore建立项目过滤规则

    在进行协作开发代码管理的过程中,常常会遇到某些临时文件.配置文件.或者生成文件等,这些文件由于不同的开发端会不一样,如果使用git add . 将所有文件纳入git库中,那么会出现频繁的改动和push ...

  9. Servlet基础梳理(四)

    本篇说一下session和路径的问题. session: 是一种在server端保存http状态信息的方案.眼下有两种实现方式:基于Cookie或者URL重写. 基于cookie:第一次訪问serve ...

  10. msbuild,Build failed with Error MSB3073 exited with code 1

    1. 接手以前的老项目,因为项目比较大,所以用Developer Command Prompt 的msbuild命令编译比较快一些,常用命令如下 devenv /?             帮助 ms ...