Module bus.crypto

Class Mac

java.lang.Object
org.miaixz.bus.crypto.center.Mac
All Implemented Interfaces:
Serializable
Direct Known Subclasses:
HMac

public class Mac extends Object implements Serializable
MAC摘要算法(此类兼容和JCE的 javax.crypto.Mac对象和BC库的org.bouncycastle.crypto.Mac对象) MAC,全称为“Message Authentication Code”,中文名“消息鉴别码” 主要是利用指定算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。 一般的,消息鉴别码用于验证传输于两个共同享有一个密钥的单位之间的消息。 注意:此对象实例化后为非线程安全!
Since:
Java 17+
Author:
Kimi Liu
See Also:
  • Constructor Details

    • Mac

      public Mac(org.miaixz.bus.crypto.builtin.digest.mac.Mac engine)
      构造
      Parameters:
      engine - MAC算法实现引擎
  • Method Details

    • getEngine

      public org.miaixz.bus.crypto.builtin.digest.mac.Mac getEngine()
      获得MAC算法引擎
      Returns:
      MAC算法引擎
    • digest

      public byte[] digest(String data, Charset charset)
      生成文件摘要
      Parameters:
      data - 被摘要数据
      charset - 编码
      Returns:
      摘要
    • digest

      public byte[] digest(String data)
      生成文件摘要
      Parameters:
      data - 被摘要数据
      Returns:
      摘要
    • digestBase64

      public String digestBase64(String data, boolean isUrlSafe)
      生成文件摘要,并转为Base64
      Parameters:
      data - 被摘要数据
      isUrlSafe - 是否使用URL安全字符
      Returns:
      摘要
    • digestBase64

      public String digestBase64(String data, Charset charset, boolean isUrlSafe)
      生成文件摘要,并转为Base64
      Parameters:
      data - 被摘要数据
      charset - 编码
      isUrlSafe - 是否使用URL安全字符
      Returns:
      摘要
    • digestHex

      public String digestHex(String data, Charset charset)
      生成文件摘要,并转为16进制字符串
      Parameters:
      data - 被摘要数据
      charset - 编码
      Returns:
      摘要
    • digestHex

      public String digestHex(String data)
      生成文件摘要
      Parameters:
      data - 被摘要数据
      Returns:
      摘要
    • digest

      public byte[] digest(File file) throws org.miaixz.bus.core.lang.exception.CryptoException
      生成文件摘要 使用默认缓存大小,见 Normal._8192
      Parameters:
      file - 被摘要文件
      Returns:
      摘要bytes
      Throws:
      org.miaixz.bus.core.lang.exception.CryptoException - Cause by IOException
    • digestHex

      public String digestHex(File file)
      生成文件摘要,并转为16进制字符串 使用默认缓存大小,见 Normal._8192
      Parameters:
      file - 被摘要文件
      Returns:
      摘要
    • digest

      public byte[] digest(byte[] data)
      生成摘要
      Parameters:
      data - 数据bytes
      Returns:
      摘要bytes
    • digestHex

      public String digestHex(byte[] data)
      生成摘要,并转为16进制字符串
      Parameters:
      data - 被摘要数据
      Returns:
      摘要
    • digest

      public byte[] digest(InputStream data)
      生成摘要,使用默认缓存大小,见 Normal._8192
      Parameters:
      data - InputStream 数据流
      Returns:
      摘要bytes
    • digestHex

      public String digestHex(InputStream data)
      生成摘要,并转为16进制字符串 使用默认缓存大小,见 Normal._8192
      Parameters:
      data - 被摘要数据
      Returns:
      摘要
    • digest

      public byte[] digest(InputStream data, int bufferLength)
      生成摘要
      Parameters:
      data - InputStream 数据流
      bufferLength - 缓存长度,不足1使用 Normal._8192 做为默认值
      Returns:
      摘要bytes
    • digestHex

      public String digestHex(InputStream data, int bufferLength)
      生成摘要,并转为16进制字符串 使用默认缓存大小,见 Normal._8192
      Parameters:
      data - 被摘要数据
      bufferLength - 缓存长度,不足1使用 Normal._8192 做为默认值
      Returns:
      摘要
    • verify

      public boolean verify(byte[] digest, byte[] digestToCompare)
      验证生成的摘要与给定的摘要比较是否一致 简单比较每个byte位是否相同
      Parameters:
      digest - 生成的摘要
      digestToCompare - 需要比较的摘要
      Returns:
      是否一致
      See Also:
    • getMacLength

      public int getMacLength()
      获取MAC算法块长度
      Returns:
      MAC算法块长度
    • getAlgorithm

      public String getAlgorithm()
      获取算法
      Returns:
      算法