Module bus.crypto

Class Builder

java.lang.Object
org.miaixz.bus.crypto.Builder

public class Builder extends Object
安全相关工具类 加密分为三种: 1、对称加密(symmetric),例如:AES、DES等 2、非对称加密(asymmetric),例如:RSA、DSA等 3、摘要加密(digest),例如:MD5、SHA-1、SHA-256、HMAC等
Since:
Java 17+
Author:
Kimi Liu
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static String
    自定义系统属性:是否解码Hex字符
    static final org.bouncycastle.asn1.ASN1ObjectIdentifier
    SM2国密算法公钥参数的Oid标识
    static final String
    SM2默认曲线
    static final org.bouncycastle.crypto.params.ECDomainParameters
    SM2推荐曲线参数(来自https://github.com/ZZMarquis/gmhelper)
    static final org.bouncycastle.jce.spec.ECParameterSpec
    SM2椭圆曲线参数类
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static void
    增加加密解密的算法提供者,默认优先使用,例如:
    static AES
    aes()
    AES加密,生成随机KEY。
    static AES
    aes(byte[] key)
    AES加密 例:
    static byte[]
    changeC1C2C3ToC1C3C2(byte[] c1c2c3, org.bouncycastle.crypto.params.ECDomainParameters ecDomainParameters)
    bc加解密使用旧标c1||c2||c3,此方法在加密后调用,将结果转化为c1||c3||c2
    static byte[]
    changeC1C3C2ToC1C2C3(byte[] c1c3c2, org.bouncycastle.crypto.params.ECDomainParameters ecDomainParameters)
    bc加解密使用旧标c1||c3||c2,此方法在解密前调用,将密文转化为c1||c2||c3再去解密
    static boolean
    checkpw(String password, String hashed)
    验证密码是否与Bcrypt加密后的密文匹配
    static Cipher
    createCipher(String algorithm)
    创建Cipher 当provider为null时,使用Holder查找提供方,找不到使用JDK默认提供方。
    static org.miaixz.bus.crypto.builtin.digest.mac.Mac
    createHmacSm3Engine(byte[] key)
    创建HmacSM3算法的Mac
    创建MessageDigest,使用JDK默认的Provider
    static KeySpec
    createKeySpec(String algorithm, byte[] key)
    根据算法创建KeySpec DESede: DESedeKeySpec DES : DESedeKeySpec 其它 : SecretKeySpec
    static Mac
    createMac(String algorithm)
    创建Mac
    createMessageDigest(String algorithm, Provider provider)
    创建MessageDigest 当provider为null时,使用Holder查找提供方,找不到使用JDK默认提供方。
    static PBEKeySpec
    createPBEKeySpec(char[] password)
    创建PBEKeySpec PBE算法没有密钥的概念,密钥在其它对称加密算法中是经过算法计算得出来的,PBE算法则是使用口令替代了密钥。
    createPBEParameterSpec(byte[] salt, int iterationCount)
    static Signature
    创建Signature签名对象
    static Signature
    createSignature(org.miaixz.bus.core.lang.Algorithm asymmetricAlgorithm, org.miaixz.bus.core.lang.Algorithm digestAlgorithm)
    生成签名对象,仅用于非对称加密
    static byte[]
    解码字符串密钥,可支持的编码如下:
    static byte[]
    decrypt(String algorithm, String key, byte[] content)
    数据解密
    decrypt(String algorithm, String key, InputStream inputStream)
    数据解密
    static String
    decrypt(String algorithm, String key, String content, Charset charset)
    数据解密
    static DES
    des()
    DES加密,生成随机KEY。
    static DES
    des(byte[] key)
    DES加密 例:
    static Digester
    digester(String algorithm)
    新建摘要器
    static Digester
    digester(org.miaixz.bus.core.lang.Algorithm algorithm)
    新建摘要器
    static void
    强制关闭自定义Provider的使用,如Bouncy Castle库,全局有效
    static byte[]
    encrypt(String algorithm, String key, byte[] content)
    数据加密
    encrypt(String algorithm, String key, InputStream inputStream)
    数据加密
    static String
    encrypt(String algorithm, String key, String content, Charset charset)
    数据加密
    static FPE
    fpe(FPE.FPEMode mode, byte[] key, org.bouncycastle.crypto.AlphabetMapper mapper, byte[] tweak)
    FPE(Format Preserving Encryption)实现,支持FF1和FF3-1模式。
    static String
    generateAlgorithm(org.miaixz.bus.core.lang.Algorithm asymmetricAlgorithm, org.miaixz.bus.core.lang.Algorithm digestAlgorithm)
    生成算法,格式为XXXwithXXX
    static String
    hashpw(String password)
    生成Bcrypt加密后的密文
    static HMac
    hmac(org.miaixz.bus.core.lang.Algorithm algorithm, byte[] key)
    创建HMac对象,调用digest方法可获得hmac值
    static HMac
    hmac(org.miaixz.bus.core.lang.Algorithm algorithm, String key)
    创建HMac对象,调用digest方法可获得hmac值
    static HMac
    hmac(org.miaixz.bus.core.lang.Algorithm algorithm, SecretKey key)
    创建HMac对象,调用digest方法可获得hmac值
    static HMac
    HmacMD5加密器,生成随机KEY 例: HmacMD5加密:hmacMd5().digest(data) HmacMD5加密并转为16进制字符串:hmacMd5().digestHex(data)
    static HMac
    hmacMd5(byte[] key)
    HmacMD5加密器 例: HmacMD5加密:hmacMd5(data).digest(data) HmacMD5加密并转为16进制字符串:hmacMd5(data).digestHex(data)
    static HMac
    HmacMD5加密器 例: HmacMD5加密:hmacMd5(data).digest(data) HmacMD5加密并转为16进制字符串:hmacMd5(data).digestHex(data)
    static HMac
    HmacSHA1加密器,生成随机KEY 例: HmacSHA1加密:hmacSha1().digest(data) HmacSHA1加密并转为16进制字符串:hmacSha1().digestHex(data)
    static HMac
    hmacSha1(byte[] key)
    HmacSHA1加密器 例: HmacSHA1加密:hmacSha1(data).digest(data) HmacSHA1加密并转为16进制字符串:hmacSha1(data).digestHex(data)
    static HMac
    HmacSHA1加密器 例: HmacSHA1加密:hmacSha1(data).digest(data) HmacSHA1加密并转为16进制字符串:hmacSha1(data).digestHex(data)
    static HMac
    HmacSHA256加密器,生成随机KEY 例: HmacSHA256加密:hmacSha256().digest(data) HmacSHA256加密并转为16进制字符串:hmacSha256().digestHex(data)
    static HMac
    hmacSha256(byte[] key)
    HmacSHA256加密器 例: HmacSHA256加密:hmacSha256(data).digest(data) HmacSHA256加密并转为16进制字符串:hmacSha256(data).digestHex(data)
    static HMac
    HmacSHA256加密器 例: HmacSHA256加密:hmacSha256(data).digest(data) HmacSHA256加密并转为16进制字符串:hmacSha256(data).digestHex(data)
    static HMac
    hmacSm3(byte[] key)
    HmacSM3算法实现
    static MD5
    md5()
    MD5加密 例:
    static byte[]
    md5(byte[] data)
    计算32位MD5摘要值
    static String
    md5(File dataFile)
    MD5加密文件,生成16进制MD5字符串
    static String
    MD5加密,生成16进制MD5字符串
    static String
    md5(String data)
    MD5加密,生成16进制MD5字符串
    static byte[]
    md5(String data, Charset charset)
    计算32位MD5摘要值
    static String
    md5Hex(byte[] data)
    计算32位MD5摘要值,并转为16进制字符串
    static String
    md5Hex(File file)
    计算32位MD5摘要值,并转为16进制字符串
    static String
    计算32位MD5摘要值,并转为16进制字符串
    static String
    md5Hex(String data)
    计算32位MD5摘要值,并转为16进制字符串
    static String
    md5Hex(String data, Charset charset)
    计算32位MD5摘要值,并转为16进制字符串
    static String
    md5Hex16(byte[] data)
    计算16位MD5摘要值,并转为16进制字符串
    static String
    md5Hex16(File file)
    计算16位MD5摘要值,并转为16进制字符串
    static String
    计算16位MD5摘要值,并转为16进制字符串
    static String
    计算16位MD5摘要值,并转为16进制字符串
    static String
    md5Hex16(String data, Charset charset)
    计算16位MD5摘要值,并转为16进制字符串
    static String
    32位MD5转16位MD5
    static String
    pbkdf2(char[] password, byte[] salt)
    PBKDF2加密密码
    static Crypto
    rc4(byte[] key)
    RC4算法
    static RSA
    rsa()
    创建RSA算法对象 生成新的私钥公钥对
    static RSA
    rsa(byte[] privateKey, byte[] publicKey)
    创建RSA算法对象 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密或者解密
    static RSA
    rsa(String privateKeyBase64, String publicKeyBase64)
    创建RSA算法对象 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密或者解密
    static byte[]
    rsAsn1ToPlain(byte[] rsDer)
    BC的SM3withSM2签名得到的结果的rs是asn1格式的,这个方法转化成直接拼接r||s
    static byte[]
    rsPlainToAsn1(byte[] sign)
    BC的SM3withSM2验签需要的rs是asn1格式的,这个方法将直接拼接r||s的字节数组转化成asn1格式
    static Digester
    SHA1加密 例: SHA1加密:sha1().digest(data) SHA1加密并转为16进制字符串:sha1().digestHex(data)
    static byte[]
    sha1(byte[] data)
    计算SHA-1摘要值
    static String
    sha1(File dataFile)
    SHA1加密文件,生成16进制SHA1字符串
    static String
    SHA1加密,生成16进制SHA1字符串
    static String
    sha1(String data)
    SHA1加密,生成16进制SHA1字符串
    static byte[]
    sha1(String data, Charset charset)
    计算SHA-1摘要值
    static String
    sha1Hex(byte[] data)
    计算SHA-1摘要值,并转为16进制字符串
    static String
    sha1Hex(File file)
    计算SHA-1摘要值,并转为16进制字符串
    static String
    计算SHA-1摘要值,并转为16进制字符串
    static String
    计算SHA-1摘要值,并转为16进制字符串
    static String
    sha1Hex(String data, Charset charset)
    计算SHA-1摘要值,并转为16进制字符串
    static Digester
    SHA256加密 例: SHA256加密:sha256().digest(data) SHA256加密并转为16进制字符串:sha256().digestHex(data)
    static byte[]
    sha256(byte[] data)
    计算SHA-256摘要值
    static String
    sha256(File dataFile)
    SHA256加密文件,生成16进制SHA256字符串
    static String
    SHA256加密,生成16进制SHA256字符串
    static String
    sha256(String data)
    SHA256加密,生成16进制SHA256字符串
    static String
    sha256Hex(byte[] data)
    计算SHA-1摘要值,并转为16进制字符串
    static String
    计算SHA-256摘要值,并转为16进制字符串
    static String
    计算SHA-256摘要值,并转为16进制字符串
    static String
    计算SHA-256摘要值,并转为16进制字符串
    static String
    sha256Hex(String data, Charset charset)
    计算SHA-256摘要值,并转为16进制字符串
    static byte[]
    sha512(byte[] data)
    计算SHA-512摘要值
    static byte[]
    sha512(File file)
    计算SHA-512摘要值
    static byte[]
    计算SHA-512摘要值
    static byte[]
    sha512(String data)
    计算sha512摘要值,使用UTF-8编码
    static byte[]
    sha512(String data, Charset charset)
    计算SHA-512摘要值
    static String
    sha512Hex(byte[] data)
    计算SHA-1摘要值,并转为16进制字符串
    static String
    计算SHA-512摘要值,并转为16进制字符串
    static String
    计算SHA-512摘要值,并转为16进制字符串
    static String
    计算SHA-512摘要值,并转为16进制字符串
    static String
    sha512Hex(String data, Charset charset)
    计算SHA-512摘要值,并转为16进制字符串
    static Sign
    sign(org.miaixz.bus.core.lang.Algorithm algorithm)
    创建签名算法对象 生成新的私钥公钥对
    static Sign
    sign(org.miaixz.bus.core.lang.Algorithm algorithm, byte[] privateKey, byte[] publicKey)
    创建Sign算法对象 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做签名或验证
    static Sign
    sign(org.miaixz.bus.core.lang.Algorithm algorithm, String privateKeyBase64, String publicKeyBase64)
    创建签名算法对象 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做签名或验证
    static String
    signParams(org.miaixz.bus.core.lang.Algorithm digestAlgorithm, Map<?,?> params, String... otherParams)
    对参数做签名 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串 拼接后的字符串键值对之间无符号,键值对之间无符号,忽略null值
    static String
    signParams(org.miaixz.bus.core.lang.Algorithm digestAlgorithm, Map<?,?> params, String separator, String keyValueSeparator, boolean isIgnoreNull, String... otherParams)
    对参数做签名 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串
    static String
    signParams(Crypto crypto, Map<?,?> params, String... otherParams)
    对参数做签名 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串 拼接后的字符串键值对之间无符号,键值对之间无符号,忽略null值
    static String
    signParams(Crypto crypto, Map<?,?> params, String separator, String keyValueSeparator, boolean isIgnoreNull, String... otherParams)
    对参数做签名 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串
    static String
    signParamsMd5(Map<?,?> params, String... otherParams)
    对参数做md5签名 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串 拼接后的字符串键值对之间无符号,键值对之间无符号,忽略null值
    static String
    signParamsSha1(Map<?,?> params, String... otherParams)
    对参数做Sha1签名 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串 拼接后的字符串键值对之间无符号,键值对之间无符号,忽略null值
    static String
    signParamsSha256(Map<?,?> params, String... otherParams)
    对参数做Sha256签名 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串 拼接后的字符串键值对之间无符号,键值对之间无符号,忽略null值
    static SM2
    sm2()
    创建SM2算法对象 生成新的私钥公钥对
    static SM2
    sm2(byte[] privateKey, byte[] publicKey)
    创建SM2算法对象 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密或者解密
    static SM2
    sm2(String privateKey, String publicKey)
    创建SM2算法对象 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密或者解密
    static SM2
    sm2(PrivateKey privateKey, PublicKey publicKey)
    创建SM2算法对象 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密或者解密
    static SM2
    sm2(org.bouncycastle.crypto.params.ECPrivateKeyParameters privateKeyParams, org.bouncycastle.crypto.params.ECPublicKeyParameters publicKeyParams)
    创建SM2算法对象 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密或者解密
    static SM3
    sm3()
    SM3加密 例: SM3加密:sm3().digest(data) SM3加密并转为16进制字符串:sm3().digestHex(data)
    static String
    sm3(File dataFile)
    SM3加密文件,生成16进制SM3字符串
    static String
    SM3加密,生成16进制SM3字符串
    static String
    sm3(String data)
    SM3加密,生成16进制SM3字符串
    static SM3
    sm3WithSalt(byte[] salt)
    SM3加密,可以传入盐
    static SM4
    sm4()
    SM4加密,生成随机KEY。
    static SM4
    sm4(byte[] key)
    SM4加密 例:
    static TDEA
    三重数据加密算法,缩写为TDEA(又名3DES、TripleDES),生成随机KEY。
    static TDEA
    tdea(byte[] key)
    三重数据加密算法,缩写为TDEA(又名3DES、TripleDES),生成随机KEY。
    static org.bouncycastle.crypto.params.ECDomainParameters
    构建ECDomainParameters对象
    static org.bouncycastle.crypto.params.ECDomainParameters
    toDomainParams(org.bouncycastle.asn1.x9.X9ECParameters x9ECParameters)
    构建ECDomainParameters对象
    static org.bouncycastle.crypto.params.ECDomainParameters
    toDomainParams(org.bouncycastle.jce.spec.ECParameterSpec parameterSpec)
    构建ECDomainParameters对象
    static byte[]
    toPkcs1(PrivateKey privateKey)
    Java中的PKCS#8格式私钥转换为OpenSSL支持的PKCS#1格式
    static byte[]
    toPkcs1(PublicKey publicKey)
    Java中的X.509格式公钥转换为OpenSSL支持的PKCS#1格式
    static org.bouncycastle.crypto.BufferedBlockCipher
    wrap(org.bouncycastle.crypto.BlockCipher cipher, org.miaixz.bus.core.lang.Algorithm.Mode mode, Padding padding)
    BlockCipher包装为指定mode和padding的BufferedBlockCipher
    static ZUC
    zuc128(byte[] key, byte[] iv)
    祖冲之算法集(ZUC-128算法)实现,基于BouncyCastle实现。
    static ZUC
    zuc256(byte[] key, byte[] iv)
    祖冲之算法集(ZUC-256算法)实现,基于BouncyCastle实现。

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • SM2_CURVE_NAME

      public static final String SM2_CURVE_NAME
      SM2默认曲线
      See Also:
    • SM2_EC_SPEC

      public static final org.bouncycastle.jce.spec.ECParameterSpec SM2_EC_SPEC
      SM2椭圆曲线参数类
    • SM2_DOMAIN_PARAMS

      public static final org.bouncycastle.crypto.params.ECDomainParameters SM2_DOMAIN_PARAMS
      SM2推荐曲线参数(来自https://github.com/ZZMarquis/gmhelper)
    • ID_SM2_PUBLIC_KEY_PARAM

      public static final org.bouncycastle.asn1.ASN1ObjectIdentifier ID_SM2_PUBLIC_KEY_PARAM
      SM2国密算法公钥参数的Oid标识
    • CRYPTO_DECODE_HEX

      public static String CRYPTO_DECODE_HEX
      自定义系统属性:是否解码Hex字符
  • Constructor Details

    • Builder

      public Builder()
  • Method Details

    • generateAlgorithm

      public static String generateAlgorithm(org.miaixz.bus.core.lang.Algorithm asymmetricAlgorithm, org.miaixz.bus.core.lang.Algorithm digestAlgorithm)
      生成算法,格式为XXXwithXXX
      Parameters:
      asymmetricAlgorithm - 非对称算法
      digestAlgorithm - 摘要算法
      Returns:
      算法
    • aes

      public static AES aes()
      AES加密,生成随机KEY。注意解密时必须使用相同 AES对象或者使用相同KEY 例:
       AES加密:aes().encrypt(data)
       AES解密:aes().decrypt(data)
       
      Returns:
      AES
    • aes

      public static AES aes(byte[] key)
      AES加密 例:
       AES加密:aes(data).encrypt(data)
       AES解密:aes(data).decrypt(data)
       
      Parameters:
      key - 密钥
      Returns:
      Crypto
    • des

      public static DES des()
      DES加密,生成随机KEY。注意解密时必须使用相同 DES对象或者使用相同KEY 例:
       DES加密:des().encrypt(data)
       DES解密:des().decrypt(data)
       
      Returns:
      DES
    • des

      public static DES des(byte[] key)
      DES加密 例:
       DES加密:des(data).encrypt(data)
       DES解密:des(data).decrypt(data)
       
      Parameters:
      key - 密钥
      Returns:
      DES
    • tdea

      public static TDEA tdea()
      三重数据加密算法,缩写为TDEA(又名3DES、TripleDES),生成随机KEY。 注意解密时必须使用相同 TDEA对象或者使用相同KEY Java中默认实现为:DESede/ECB/PKCS5Padding 例:
       DESede加密:tdea().encrypt(data)
       DESede解密:tdea().decrypt(data)
       
      Returns:
      TDEA
    • tdea

      public static TDEA tdea(byte[] key)
      三重数据加密算法,缩写为TDEA(又名3DES、TripleDES),生成随机KEY。 注意解密时必须使用相同 TDEA对象或者使用相同KEY Java中默认实现为:DESede/ECB/PKCS5Padding 例:
       DESede加密:tdea(data).encrypt(data)
       DESede解密:tdea(data).decrypt(data)
       
      Parameters:
      key - 密钥
      Returns:
      TDEA
    • md5

      public static MD5 md5()
      MD5加密 例:
       MD5加密:md5().digest(data)
       MD5加密并转为16进制字符串:md5().digestHex(data)
       
      Returns:
      Digester
    • md5

      public static String md5(String data)
      MD5加密,生成16进制MD5字符串
      Parameters:
      data - 数据
      Returns:
      MD5字符串
    • md5

      public static String md5(InputStream data)
      MD5加密,生成16进制MD5字符串
      Parameters:
      data - 数据
      Returns:
      MD5字符串
    • md5

      public static String md5(File dataFile)
      MD5加密文件,生成16进制MD5字符串
      Parameters:
      dataFile - 被加密文件
      Returns:
      MD5字符串
    • sha1

      public static Digester sha1()
      SHA1加密 例: SHA1加密:sha1().digest(data) SHA1加密并转为16进制字符串:sha1().digestHex(data)
      Returns:
      Digester
    • sha1

      public static String sha1(String data)
      SHA1加密,生成16进制SHA1字符串
      Parameters:
      data - 数据
      Returns:
      SHA1字符串
    • sha1

      public static String sha1(InputStream data)
      SHA1加密,生成16进制SHA1字符串
      Parameters:
      data - 数据
      Returns:
      SHA1字符串
    • sha1

      public static String sha1(File dataFile)
      SHA1加密文件,生成16进制SHA1字符串
      Parameters:
      dataFile - 被加密文件
      Returns:
      SHA1字符串
    • sha256

      public static Digester sha256()
      SHA256加密 例: SHA256加密:sha256().digest(data) SHA256加密并转为16进制字符串:sha256().digestHex(data)
      Returns:
      Digester
    • sha256

      public static String sha256(String data)
      SHA256加密,生成16进制SHA256字符串
      Parameters:
      data - 数据
      Returns:
      SHA256字符串
    • sha256

      public static String sha256(InputStream data)
      SHA256加密,生成16进制SHA256字符串
      Parameters:
      data - 数据
      Returns:
      SHA1字符串
    • sha256

      public static String sha256(File dataFile)
      SHA256加密文件,生成16进制SHA256字符串
      Parameters:
      dataFile - 被加密文件
      Returns:
      SHA256字符串
    • hmac

      public static HMac hmac(org.miaixz.bus.core.lang.Algorithm algorithm, String key)
      创建HMac对象,调用digest方法可获得hmac值
      Parameters:
      algorithm - Algorithm
      key - 密钥,如果为null生成随机密钥
      Returns:
      HMac
    • hmac

      public static HMac hmac(org.miaixz.bus.core.lang.Algorithm algorithm, byte[] key)
      创建HMac对象,调用digest方法可获得hmac值
      Parameters:
      algorithm - Algorithm
      key - 密钥,如果为null生成随机密钥
      Returns:
      HMac
    • hmac

      public static HMac hmac(org.miaixz.bus.core.lang.Algorithm algorithm, SecretKey key)
      创建HMac对象,调用digest方法可获得hmac值
      Parameters:
      algorithm - Algorithm
      key - 密钥SecretKey,如果为null生成随机密钥
      Returns:
      HMac
    • hmacMd5

      public static HMac hmacMd5(String key)
      HmacMD5加密器 例: HmacMD5加密:hmacMd5(data).digest(data) HmacMD5加密并转为16进制字符串:hmacMd5(data).digestHex(data)
      Parameters:
      key - 加密密钥,如果为null生成随机密钥
      Returns:
      HMac
    • hmacMd5

      public static HMac hmacMd5(byte[] key)
      HmacMD5加密器 例: HmacMD5加密:hmacMd5(data).digest(data) HmacMD5加密并转为16进制字符串:hmacMd5(data).digestHex(data)
      Parameters:
      key - 加密密钥,如果为null生成随机密钥
      Returns:
      HMac
    • hmacMd5

      public static HMac hmacMd5()
      HmacMD5加密器,生成随机KEY 例: HmacMD5加密:hmacMd5().digest(data) HmacMD5加密并转为16进制字符串:hmacMd5().digestHex(data)
      Returns:
      HMac
    • hmacSha1

      public static HMac hmacSha1(String key)
      HmacSHA1加密器 例: HmacSHA1加密:hmacSha1(data).digest(data) HmacSHA1加密并转为16进制字符串:hmacSha1(data).digestHex(data)
      Parameters:
      key - 加密密钥,如果为null生成随机密钥
      Returns:
      HMac
    • hmacSha1

      public static HMac hmacSha1(byte[] key)
      HmacSHA1加密器 例: HmacSHA1加密:hmacSha1(data).digest(data) HmacSHA1加密并转为16进制字符串:hmacSha1(data).digestHex(data)
      Parameters:
      key - 加密密钥,如果为null生成随机密钥
      Returns:
      HMac
    • hmacSha1

      public static HMac hmacSha1()
      HmacSHA1加密器,生成随机KEY 例: HmacSHA1加密:hmacSha1().digest(data) HmacSHA1加密并转为16进制字符串:hmacSha1().digestHex(data)
      Returns:
      HMac
    • hmacSha256

      public static HMac hmacSha256(String key)
      HmacSHA256加密器 例: HmacSHA256加密:hmacSha256(data).digest(data) HmacSHA256加密并转为16进制字符串:hmacSha256(data).digestHex(data)
      Parameters:
      key - 加密密钥,如果为null生成随机密钥
      Returns:
      HMac
    • hmacSha256

      public static HMac hmacSha256(byte[] key)
      HmacSHA256加密器 例: HmacSHA256加密:hmacSha256(data).digest(data) HmacSHA256加密并转为16进制字符串:hmacSha256(data).digestHex(data)
      Parameters:
      key - 加密密钥,如果为null生成随机密钥
      Returns:
      HMac
    • hmacSha256

      public static HMac hmacSha256()
      HmacSHA256加密器,生成随机KEY 例: HmacSHA256加密:hmacSha256().digest(data) HmacSHA256加密并转为16进制字符串:hmacSha256().digestHex(data)
      Returns:
      HMac
    • rsa

      public static RSA rsa()
      创建RSA算法对象 生成新的私钥公钥对
      Returns:
      RSA
    • rsa

      public static RSA rsa(String privateKeyBase64, String publicKeyBase64)
      创建RSA算法对象 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密或者解密
      Parameters:
      privateKeyBase64 - 私钥Base64
      publicKeyBase64 - 公钥Base64
      Returns:
      RSA
    • rsa

      public static RSA rsa(byte[] privateKey, byte[] publicKey)
      创建RSA算法对象 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密或者解密
      Parameters:
      privateKey - 私钥
      publicKey - 公钥
      Returns:
      RSA
    • addProvider

      public static void addProvider(Provider provider)
      增加加密解密的算法提供者,默认优先使用,例如:
       addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
       
      Parameters:
      provider - 算法提供者
    • decode

      public static byte[] decode(String key)
      解码字符串密钥,可支持的编码如下:
       1. Hex(16进制)编码
       1. Base64编码
       
      Parameters:
      key - 被解码的密钥字符串
      Returns:
      密钥
    • createCipher

      public static Cipher createCipher(String algorithm)
      创建Cipher 当provider为null时,使用Holder查找提供方,找不到使用JDK默认提供方。
      Parameters:
      algorithm - 算法
      Returns:
      Cipher
    • createMessageDigest

      public static MessageDigest createMessageDigest(String algorithm, Provider provider)
      创建MessageDigest 当provider为null时,使用Holder查找提供方,找不到使用JDK默认提供方。
      Parameters:
      algorithm - 算法
      provider - 算法提供方,null表示使用Holder找到的提供方。
      Returns:
      MessageDigest
    • createJdkMessageDigest

      public static MessageDigest createJdkMessageDigest(String algorithm)
      创建MessageDigest,使用JDK默认的Provider
      Parameters:
      algorithm - 算法
      Returns:
      MessageDigest
    • createMac

      public static Mac createMac(String algorithm)
      创建Mac
      Parameters:
      algorithm - 算法
      Returns:
      Mac
    • rc4

      public static Crypto rc4(byte[] key)
      RC4算法
      Parameters:
      key - 密钥
      Returns:
      Crypto
    • disableCustomProvider

      public static void disableCustomProvider()
      强制关闭自定义Provider的使用,如Bouncy Castle库,全局有效
    • pbkdf2

      public static String pbkdf2(char[] password, byte[] salt)
      PBKDF2加密密码
      Parameters:
      password - 密码
      salt - 盐
      Returns:
      盐,一般为16位
    • fpe

      public static FPE fpe(FPE.FPEMode mode, byte[] key, org.bouncycastle.crypto.AlphabetMapper mapper, byte[] tweak)
      FPE(Format Preserving Encryption)实现,支持FF1和FF3-1模式。
      Parameters:
      mode - FPE模式枚举,可选FF1或FF3-1
      key - 密钥,null表示随机密钥,长度必须是16bit、24bit或32bit
      mapper - Alphabet字典映射,被加密的字符范围和这个映射必须一致,例如手机号、银行卡号等字段可以采用数字字母字典表
      tweak - Tweak是为了解决因局部加密而导致结果冲突问题,通常情况下将数据的不可变部分作为Tweak
      Returns:
      FPE
    • zuc128

      public static ZUC zuc128(byte[] key, byte[] iv)
      祖冲之算法集(ZUC-128算法)实现,基于BouncyCastle实现。
      Parameters:
      key - 密钥
      iv - 加盐,长度16bytes,null是随机加盐
      Returns:
      ZUC
    • zuc256

      public static ZUC zuc256(byte[] key, byte[] iv)
      祖冲之算法集(ZUC-256算法)实现,基于BouncyCastle实现。
      Parameters:
      key - 密钥
      iv - 加盐,长度25bytes,null是随机加盐
      Returns:
      ZUC
    • sm2

      public static SM2 sm2()
      创建SM2算法对象 生成新的私钥公钥对
      Returns:
      SM2
    • sm2

      public static SM2 sm2(String privateKey, String publicKey)
      创建SM2算法对象 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密或者解密
      Parameters:
      privateKey - 私钥Hex或Base64表示
      publicKey - 公钥Hex或Base64表示
      Returns:
      SM2
    • sm2

      public static SM2 sm2(byte[] privateKey, byte[] publicKey)
      创建SM2算法对象 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密或者解密
      Parameters:
      privateKey - 私钥,必须使用PKCS#8规范
      publicKey - 公钥,必须使用X509规范
      Returns:
      SM2
    • sm2

      public static SM2 sm2(PrivateKey privateKey, PublicKey publicKey)
      创建SM2算法对象 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密或者解密
      Parameters:
      privateKey - 私钥
      publicKey - 公钥
      Returns:
      SM2
    • sm2

      public static SM2 sm2(org.bouncycastle.crypto.params.ECPrivateKeyParameters privateKeyParams, org.bouncycastle.crypto.params.ECPublicKeyParameters publicKeyParams)
      创建SM2算法对象 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密或者解密
      Parameters:
      privateKeyParams - 私钥参数
      publicKeyParams - 公钥参数
      Returns:
      SM2
    • sm3

      public static SM3 sm3()
      SM3加密 例: SM3加密:sm3().digest(data) SM3加密并转为16进制字符串:sm3().digestHex(data)
      Returns:
      SM3
    • sm3WithSalt

      public static SM3 sm3WithSalt(byte[] salt)
      SM3加密,可以传入盐
      Parameters:
      salt - 加密盐
      Returns:
      SM3
    • sm3

      public static String sm3(String data)
      SM3加密,生成16进制SM3字符串
      Parameters:
      data - 数据
      Returns:
      SM3字符串
    • sm3

      public static String sm3(InputStream data)
      SM3加密,生成16进制SM3字符串
      Parameters:
      data - 数据
      Returns:
      SM3字符串
    • sm3

      public static String sm3(File dataFile)
      SM3加密文件,生成16进制SM3字符串
      Parameters:
      dataFile - 被加密文件
      Returns:
      SM3字符串
    • sm4

      public static SM4 sm4()
      SM4加密,生成随机KEY。注意解密时必须使用相同 Crypto对象或者使用相同KEY 例:
       SM4加密:sm4().encrypt(data)
       SM4解密:sm4().decrypt(data)
       
      Returns:
      Crypto
    • sm4

      public static SM4 sm4(byte[] key)
      SM4加密 例:
       SM4加密:sm4(data).encrypt(data)
       SM4解密:sm4(data).decrypt(data)
       
      Parameters:
      key - 密钥
      Returns:
      SM4
    • changeC1C2C3ToC1C3C2

      public static byte[] changeC1C2C3ToC1C3C2(byte[] c1c2c3, org.bouncycastle.crypto.params.ECDomainParameters ecDomainParameters)
      bc加解密使用旧标c1||c2||c3,此方法在加密后调用,将结果转化为c1||c3||c2
      Parameters:
      c1c2c3 - 加密后的bytes,顺序为C1C2C3
      ecDomainParameters - ECDomainParameters
      Returns:
      加密后的bytes,顺序为C1C3C2
    • changeC1C3C2ToC1C2C3

      public static byte[] changeC1C3C2ToC1C2C3(byte[] c1c3c2, org.bouncycastle.crypto.params.ECDomainParameters ecDomainParameters)
      bc加解密使用旧标c1||c3||c2,此方法在解密前调用,将密文转化为c1||c2||c3再去解密
      Parameters:
      c1c3c2 - 加密后的bytes,顺序为C1C3C2
      ecDomainParameters - ECDomainParameters
      Returns:
      c1c2c3 加密后的bytes,顺序为C1C2C3
    • rsAsn1ToPlain

      public static byte[] rsAsn1ToPlain(byte[] rsDer)
      BC的SM3withSM2签名得到的结果的rs是asn1格式的,这个方法转化成直接拼接r||s
      Parameters:
      rsDer - rs in asn1 format
      Returns:
      sign result in plain byte array
    • rsPlainToAsn1

      public static byte[] rsPlainToAsn1(byte[] sign)
      BC的SM3withSM2验签需要的rs是asn1格式的,这个方法将直接拼接r||s的字节数组转化成asn1格式
      Parameters:
      sign - in plain byte array
      Returns:
      rs result in asn1 format
    • createHmacSm3Engine

      public static org.miaixz.bus.crypto.builtin.digest.mac.Mac createHmacSm3Engine(byte[] key)
      创建HmacSM3算法的Mac
      Parameters:
      key - 密钥
      Returns:
      Mac
    • hmacSm3

      public static HMac hmacSm3(byte[] key)
      HmacSM3算法实现
      Parameters:
      key - 密钥
      Returns:
      HMac 对象,调用digestXXX即可
    • createSignature

      public static Signature createSignature(org.miaixz.bus.core.lang.Algorithm asymmetricAlgorithm, org.miaixz.bus.core.lang.Algorithm digestAlgorithm)
      生成签名对象,仅用于非对称加密
      Parameters:
      asymmetricAlgorithm - Algorithm 非对称加密算法
      digestAlgorithm - Algorithm 摘要算法
      Returns:
      Signature
    • createSignature

      public static Signature createSignature(String algorithm)
      创建Signature签名对象
      Parameters:
      algorithm - 算法
      Returns:
      Signature
    • sign

      public static Sign sign(org.miaixz.bus.core.lang.Algorithm algorithm)
      创建签名算法对象 生成新的私钥公钥对
      Parameters:
      algorithm - 签名算法
      Returns:
      Sign
    • sign

      public static Sign sign(org.miaixz.bus.core.lang.Algorithm algorithm, String privateKeyBase64, String publicKeyBase64)
      创建签名算法对象 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做签名或验证
      Parameters:
      algorithm - 签名算法
      privateKeyBase64 - 私钥Base64
      publicKeyBase64 - 公钥Base64
      Returns:
      Sign
    • sign

      public static Sign sign(org.miaixz.bus.core.lang.Algorithm algorithm, byte[] privateKey, byte[] publicKey)
      创建Sign算法对象 私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做签名或验证
      Parameters:
      algorithm - 算法枚举
      privateKey - 私钥
      publicKey - 公钥
      Returns:
      Sign
    • signParams

      public static String signParams(Crypto crypto, Map<?,?> params, String... otherParams)
      对参数做签名 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串 拼接后的字符串键值对之间无符号,键值对之间无符号,忽略null值
      Parameters:
      crypto - 对称加密算法
      params - 参数
      otherParams - 其它附加参数字符串(例如密钥)
      Returns:
      签名
    • signParams

      public static String signParams(Crypto crypto, Map<?,?> params, String separator, String keyValueSeparator, boolean isIgnoreNull, String... otherParams)
      对参数做签名 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串
      Parameters:
      crypto - 对称加密算法
      params - 参数
      separator - entry之间的连接符
      keyValueSeparator - kv之间的连接符
      isIgnoreNull - 是否忽略null的键和值
      otherParams - 其它附加参数字符串(例如密钥)
      Returns:
      签名
    • signParamsMd5

      public static String signParamsMd5(Map<?,?> params, String... otherParams)
      对参数做md5签名 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串 拼接后的字符串键值对之间无符号,键值对之间无符号,忽略null值
      Parameters:
      params - 参数
      otherParams - 其它附加参数字符串(例如密钥)
      Returns:
      签名
    • signParamsSha1

      public static String signParamsSha1(Map<?,?> params, String... otherParams)
      对参数做Sha1签名 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串 拼接后的字符串键值对之间无符号,键值对之间无符号,忽略null值
      Parameters:
      params - 参数
      otherParams - 其它附加参数字符串(例如密钥)
      Returns:
      签名
    • signParamsSha256

      public static String signParamsSha256(Map<?,?> params, String... otherParams)
      对参数做Sha256签名 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串 拼接后的字符串键值对之间无符号,键值对之间无符号,忽略null值
      Parameters:
      params - 参数
      otherParams - 其它附加参数字符串(例如密钥)
      Returns:
      签名
    • signParams

      public static String signParams(org.miaixz.bus.core.lang.Algorithm digestAlgorithm, Map<?,?> params, String... otherParams)
      对参数做签名 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串 拼接后的字符串键值对之间无符号,键值对之间无符号,忽略null值
      Parameters:
      digestAlgorithm - 摘要算法
      params - 参数
      otherParams - 其它附加参数字符串(例如密钥)
      Returns:
      签名
    • signParams

      public static String signParams(org.miaixz.bus.core.lang.Algorithm digestAlgorithm, Map<?,?> params, String separator, String keyValueSeparator, boolean isIgnoreNull, String... otherParams)
      对参数做签名 参数签名为对Map参数按照key的顺序排序后拼接为字符串,然后根据提供的签名算法生成签名字符串
      Parameters:
      digestAlgorithm - 摘要算法
      params - 参数
      separator - entry之间的连接符
      keyValueSeparator - kv之间的连接符
      isIgnoreNull - 是否忽略null的键和值
      otherParams - 其它附加参数字符串(例如密钥)
      Returns:
      签名
    • md5

      public static byte[] md5(byte[] data)
      计算32位MD5摘要值
      Parameters:
      data - 被摘要数据
      Returns:
      MD5摘要
    • md5

      public static byte[] md5(String data, Charset charset)
      计算32位MD5摘要值
      Parameters:
      data - 被摘要数据
      charset - 编码
      Returns:
      MD5摘要
    • md5Hex

      public static String md5Hex(byte[] data)
      计算32位MD5摘要值,并转为16进制字符串
      Parameters:
      data - 被摘要数据
      Returns:
      MD5摘要的16进制表示
    • md5Hex

      public static String md5Hex(String data, Charset charset)
      计算32位MD5摘要值,并转为16进制字符串
      Parameters:
      data - 被摘要数据
      charset - 编码
      Returns:
      MD5摘要的16进制表示
    • md5Hex

      public static String md5Hex(String data)
      计算32位MD5摘要值,并转为16进制字符串
      Parameters:
      data - 被摘要数据
      Returns:
      MD5摘要的16进制表示
    • md5Hex

      public static String md5Hex(InputStream data)
      计算32位MD5摘要值,并转为16进制字符串
      Parameters:
      data - 被摘要数据
      Returns:
      MD5摘要的16进制表示
    • md5Hex

      public static String md5Hex(File file)
      计算32位MD5摘要值,并转为16进制字符串
      Parameters:
      file - 被摘要文件
      Returns:
      MD5摘要的16进制表示
    • md5Hex16

      public static String md5Hex16(byte[] data)
      计算16位MD5摘要值,并转为16进制字符串
      Parameters:
      data - 被摘要数据
      Returns:
      MD5摘要的16进制表示
    • md5Hex16

      public static String md5Hex16(String data, Charset charset)
      计算16位MD5摘要值,并转为16进制字符串
      Parameters:
      data - 被摘要数据
      charset - 编码
      Returns:
      MD5摘要的16进制表示
    • md5Hex16

      public static String md5Hex16(String data)
      计算16位MD5摘要值,并转为16进制字符串
      Parameters:
      data - 被摘要数据
      Returns:
      MD5摘要的16进制表示
    • md5Hex16

      public static String md5Hex16(InputStream data)
      计算16位MD5摘要值,并转为16进制字符串
      Parameters:
      data - 被摘要数据
      Returns:
      MD5摘要的16进制表示
    • md5Hex16

      public static String md5Hex16(File file)
      计算16位MD5摘要值,并转为16进制字符串
      Parameters:
      file - 被摘要文件
      Returns:
      MD5摘要的16进制表示
    • md5HexTo16

      public static String md5HexTo16(String md5Hex)
      32位MD5转16位MD5
      Parameters:
      md5Hex - 32位MD5
      Returns:
      16位MD5
    • sha1

      public static byte[] sha1(byte[] data)
      计算SHA-1摘要值
      Parameters:
      data - 被摘要数据
      Returns:
      SHA-1摘要
    • sha1

      public static byte[] sha1(String data, Charset charset)
      计算SHA-1摘要值
      Parameters:
      data - 被摘要数据
      charset - 编码
      Returns:
      SHA-1摘要
    • sha1Hex

      public static String sha1Hex(byte[] data)
      计算SHA-1摘要值,并转为16进制字符串
      Parameters:
      data - 被摘要数据
      Returns:
      SHA-1摘要的16进制表示
    • sha1Hex

      public static String sha1Hex(String data, Charset charset)
      计算SHA-1摘要值,并转为16进制字符串
      Parameters:
      data - 被摘要数据
      charset - 编码
      Returns:
      SHA-1摘要的16进制表示
    • sha1Hex

      public static String sha1Hex(String data)
      计算SHA-1摘要值,并转为16进制字符串
      Parameters:
      data - 被摘要数据
      Returns:
      SHA-1摘要的16进制表示
    • sha1Hex

      public static String sha1Hex(InputStream data)
      计算SHA-1摘要值,并转为16进制字符串
      Parameters:
      data - 被摘要数据
      Returns:
      SHA-1摘要的16进制表示
    • sha1Hex

      public static String sha1Hex(File file)
      计算SHA-1摘要值,并转为16进制字符串
      Parameters:
      file - 被摘要文件
      Returns:
      SHA-1摘要的16进制表示
    • sha256

      public static byte[] sha256(byte[] data)
      计算SHA-256摘要值
      Parameters:
      data - 被摘要数据
      Returns:
      SHA-256摘要
    • sha256Hex

      public static String sha256Hex(byte[] data)
      计算SHA-1摘要值,并转为16进制字符串
      Parameters:
      data - 被摘要数据
      Returns:
      SHA-256摘要的16进制表示
    • sha256Hex

      public static String sha256Hex(String data, Charset charset)
      计算SHA-256摘要值,并转为16进制字符串
      Parameters:
      data - 被摘要数据
      charset - 编码
      Returns:
      SHA-256摘要的16进制表示
    • sha256Hex

      public static String sha256Hex(String data)
      计算SHA-256摘要值,并转为16进制字符串
      Parameters:
      data - 被摘要数据
      Returns:
      SHA-256摘要的16进制表示
    • sha256Hex

      public static String sha256Hex(InputStream data)
      计算SHA-256摘要值,并转为16进制字符串
      Parameters:
      data - 被摘要数据
      Returns:
      SHA-256摘要的16进制表示
    • sha256Hex

      public static String sha256Hex(File file)
      计算SHA-256摘要值,并转为16进制字符串
      Parameters:
      file - 被摘要文件
      Returns:
      SHA-256摘要的16进制表示
    • sha512

      public static byte[] sha512(byte[] data)
      计算SHA-512摘要值
      Parameters:
      data - 被摘要数据
      Returns:
      SHA-512摘要
    • sha512

      public static byte[] sha512(String data, Charset charset)
      计算SHA-512摘要值
      Parameters:
      data - 被摘要数据
      charset - 编码
      Returns:
      SHA-512摘要
    • sha512

      public static byte[] sha512(String data)
      计算sha512摘要值,使用UTF-8编码
      Parameters:
      data - 被摘要数据
      Returns:
      MD5摘要
    • sha512

      public static byte[] sha512(InputStream data)
      计算SHA-512摘要值
      Parameters:
      data - 被摘要数据
      Returns:
      SHA-512摘要
    • sha512

      public static byte[] sha512(File file)
      计算SHA-512摘要值
      Parameters:
      file - 被摘要文件
      Returns:
      SHA-512摘要
    • sha512Hex

      public static String sha512Hex(byte[] data)
      计算SHA-1摘要值,并转为16进制字符串
      Parameters:
      data - 被摘要数据
      Returns:
      SHA-512摘要的16进制表示
    • sha512Hex

      public static String sha512Hex(String data, Charset charset)
      计算SHA-512摘要值,并转为16进制字符串
      Parameters:
      data - 被摘要数据
      charset - 编码
      Returns:
      SHA-512摘要的16进制表示
    • sha512Hex

      public static String sha512Hex(String data)
      计算SHA-512摘要值,并转为16进制字符串
      Parameters:
      data - 被摘要数据
      Returns:
      SHA-512摘要的16进制表示
    • sha512Hex

      public static String sha512Hex(InputStream data)
      计算SHA-512摘要值,并转为16进制字符串
      Parameters:
      data - 被摘要数据
      Returns:
      SHA-512摘要的16进制表示
    • sha512Hex

      public static String sha512Hex(File file)
      计算SHA-512摘要值,并转为16进制字符串
      Parameters:
      file - 被摘要文件
      Returns:
      SHA-512摘要的16进制表示
    • digester

      public static Digester digester(org.miaixz.bus.core.lang.Algorithm algorithm)
      新建摘要器
      Parameters:
      algorithm - 签名算法
      Returns:
      Digester
    • digester

      public static Digester digester(String algorithm)
      新建摘要器
      Parameters:
      algorithm - 签名算法
      Returns:
      Digester
    • hashpw

      public static String hashpw(String password)
      生成Bcrypt加密后的密文
      Parameters:
      password - 明文密码
      Returns:
      加密后的密文
    • checkpw

      public static boolean checkpw(String password, String hashed)
      验证密码是否与Bcrypt加密后的密文匹配
      Parameters:
      password - 明文密码
      hashed - hash值(加密后的值)
      Returns:
      是否匹配
    • toDomainParams

      public static org.bouncycastle.crypto.params.ECDomainParameters toDomainParams(org.bouncycastle.jce.spec.ECParameterSpec parameterSpec)
      构建ECDomainParameters对象
      Parameters:
      parameterSpec - ECParameterSpec
      Returns:
      ECDomainParameters
    • toDomainParams

      public static org.bouncycastle.crypto.params.ECDomainParameters toDomainParams(String curveName)
      构建ECDomainParameters对象
      Parameters:
      curveName - Curve名称
      Returns:
      ECDomainParameters
    • toDomainParams

      public static org.bouncycastle.crypto.params.ECDomainParameters toDomainParams(org.bouncycastle.asn1.x9.X9ECParameters x9ECParameters)
      构建ECDomainParameters对象
      Parameters:
      x9ECParameters - X9ECParameters
      Returns:
      ECDomainParameters
    • toPkcs1

      public static byte[] toPkcs1(PrivateKey privateKey)
      Java中的PKCS#8格式私钥转换为OpenSSL支持的PKCS#1格式
      Parameters:
      privateKey - PKCS#8格式私钥
      Returns:
      PKCS#1格式私钥
    • toPkcs1

      public static byte[] toPkcs1(PublicKey publicKey)
      Java中的X.509格式公钥转换为OpenSSL支持的PKCS#1格式
      Parameters:
      publicKey - X.509格式公钥
      Returns:
      PKCS#1格式公钥
    • wrap

      public static org.bouncycastle.crypto.BufferedBlockCipher wrap(org.bouncycastle.crypto.BlockCipher cipher, org.miaixz.bus.core.lang.Algorithm.Mode mode, Padding padding)
      BlockCipher包装为指定mode和padding的BufferedBlockCipher
      Parameters:
      cipher - BlockCipher
      mode - 模式
      padding - 补码方式
      Returns:
      BufferedBlockCipher,无对应Cipher返回null
    • createKeySpec

      public static KeySpec createKeySpec(String algorithm, byte[] key)
      根据算法创建KeySpec
      Parameters:
      algorithm - 算法
      key - 密钥
      Returns:
      KeySpec
    • createPBEKeySpec

      public static PBEKeySpec createPBEKeySpec(char[] password)
      创建PBEKeySpec PBE算法没有密钥的概念,密钥在其它对称加密算法中是经过算法计算得出来的,PBE算法则是使用口令替代了密钥。
      Parameters:
      password - 口令
      Returns:
      PBEKeySpec
    • createPBEParameterSpec

      public static PBEParameterSpec createPBEParameterSpec(byte[] salt, int iterationCount)
      Parameters:
      salt - 加盐值
      iterationCount - 摘要次数
      Returns:
      PBEParameterSpec
    • encrypt

      public static byte[] encrypt(String algorithm, String key, byte[] content)
      数据加密
      Parameters:
      algorithm - 加密算法
      key - 密钥, 字符串使用,分割 格式: 私钥,公钥,类型
      content - 需要加密的内容
      Returns:
      加密结果
    • encrypt

      public static String encrypt(String algorithm, String key, String content, Charset charset)
      数据加密
      Parameters:
      algorithm - 解密算法
      key - 密钥, 字符串使用,分割 格式: 私钥,公钥,类型
      content - 需要加密的内容
      charset - 字符集
      Returns:
      加密结果
    • encrypt

      public static InputStream encrypt(String algorithm, String key, InputStream inputStream)
      数据加密
      Parameters:
      algorithm - 加密算法
      key - 密钥, 字符串使用,分割 格式: 私钥,公钥,类型
      inputStream - 需要加密的内容
      Returns:
      加密结果
    • decrypt

      public static byte[] decrypt(String algorithm, String key, byte[] content)
      数据解密
      Parameters:
      algorithm - 加密算法
      key - 密钥, 字符串使用,分割 格式: 私钥,公钥,类型
      content - 需要解密的内容
      Returns:
      解密结果
    • decrypt

      public static String decrypt(String algorithm, String key, String content, Charset charset)
      数据解密
      Parameters:
      algorithm - 解密算法
      key - 密钥, 字符串使用,分割 格式: 私钥,公钥,类型
      content - 需要解密的内容
      charset - 字符集
      Returns:
      解密结果
    • decrypt

      public static InputStream decrypt(String algorithm, String key, InputStream inputStream)
      数据解密
      Parameters:
      algorithm - 解密算法
      key - 密钥, 字符串使用,分割 格式: 私钥,公钥,类型
      inputStream - 需要解密的内容
      Returns:
      解密结果