Class Digester

java.lang.Object
org.miaixz.bus.core.lang.wrapper.SimpleWrapper<MessageDigest>
org.miaixz.bus.crypto.builtin.digest.Digester
All Implemented Interfaces:
Serializable, org.miaixz.bus.core.lang.Wrapper<MessageDigest>
Direct Known Subclasses:
MD5, SM3

public class Digester extends org.miaixz.bus.core.lang.wrapper.SimpleWrapper<MessageDigest> implements Serializable
摘要算法 注意:此对象实例化后为非线程安全!
Since:
Java 17+
Author:
Kimi Liu
See Also:
  • Field Details

    • salt

      protected byte[] salt
      盐值
    • saltPosition

      protected int saltPosition
      加盐位置,即将盐值字符串放置在数据的index数,默认0
    • digestCount

      protected int digestCount
      散列次数
  • Constructor Details

    • Digester

      public Digester(org.miaixz.bus.core.lang.Algorithm algorithm)
      构造
      Parameters:
      algorithm - 算法枚举
    • Digester

      public Digester(String algorithm)
      构造
      Parameters:
      algorithm - 算法枚举
    • Digester

      public Digester(org.miaixz.bus.core.lang.Algorithm algorithm, Provider provider)
      构造
      Parameters:
      algorithm - 算法
      provider - 算法提供者,null表示使用Holder找到的提供方。
    • Digester

      public Digester(String algorithm, Provider provider)
      构造
      Parameters:
      algorithm - 算法
      provider - 算法提供者,null表示使用Holder找到的提供方。
    • Digester

      public Digester(MessageDigest messageDigest)
      构造
      Parameters:
      messageDigest - MessageDigest
  • Method Details

    • setSalt

      public Digester setSalt(byte[] salt)
      设置加盐内容
      Parameters:
      salt - 盐值
      Returns:
      this
    • setSaltPosition

      public Digester setSaltPosition(int saltPosition)
      设置加盐的位置,只有盐值存在时有效 加盐的位置指盐位于数据byte数组中的位置,例如:
       data: 0123456
       

      则当saltPosition = 2时,盐位于data的1和2中间,即第二个空隙,即:

       data: 01[salt]23456
       
      Parameters:
      saltPosition - 盐的位置
      Returns:
      this
    • setDigestCount

      public Digester setDigestCount(int digestCount)
      设置重复计算摘要值次数
      Parameters:
      digestCount - 摘要值次数
      Returns:
      this
    • reset

      public Digester reset()
      Returns:
      this
    • digest

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

      public byte[] digest(String data)
      生成文件摘要
      Parameters:
      data - 被摘要数据
      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.DEFAULT_BUFFER_SIZE
      Parameters:
      file - 被摘要文件
      Returns:
      摘要bytes
      Throws:
      org.miaixz.bus.core.lang.exception.CryptoException - Cause by IOException
    • digestHex

      public String digestHex(File file)
      生成文件摘要,并转为16进制字符串 使用默认缓存大小,见 Normal.DEFAULT_BUFFER_SIZE
      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.DEFAULT_BUFFER_SIZE
      Parameters:
      data - InputStream 数据流
      Returns:
      摘要bytes
    • digestHex

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

      public byte[] digest(InputStream data, int bufferLength) throws org.miaixz.bus.core.lang.exception.InternalException
      生成摘要
      Parameters:
      data - InputStream 数据流
      bufferLength - 缓存长度,不足1使用 Normal.DEFAULT_BUFFER_SIZE 做为默认值
      Returns:
      摘要bytes
      Throws:
      org.miaixz.bus.core.lang.exception.InternalException - IO异常
    • digestHex

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

      public int getDigestLength()
      获取散列长度,0表示不支持此方法
      Returns:
      散列长度,0表示不支持此方法