Class CryptoUtil

java.lang.Object
org.seppiko.commons.utils.CryptoUtil

public class CryptoUtil
extends java.lang.Object
Crypto util https://docs.oracle.com/en/java/javase/11/docs/specs/security/standard-names.html
Author:
Leonard Woo
  • Constructor Summary

    Constructors
    Constructor Description
    CryptoUtil()  
  • Method Summary

    Modifier and Type Method Description
    static byte[] cipher​(java.lang.String algorithm, java.security.Provider provider, int opmode, java.security.Key key, java.security.spec.AlgorithmParameterSpec params, byte[] data)
    Cipher util
    static byte[] cipher​(java.lang.String algorithm, java.security.Provider provider, java.lang.String keyAlgorithm, byte[] data, byte[] key, int opmode, java.security.spec.AlgorithmParameterSpec params)
    Cipher util
    static java.security.KeyPair keyPairGenerator​(java.lang.String algorithm, int keysize)
    Asymmetric cryptography key pair generator
    static byte[] mac​(byte[] data, byte[] salt, java.lang.String algorithm, java.lang.String keyAlgorithm)
    Mac util
    static byte[] md​(java.lang.String algorithm, byte[] data)
    Message Digest util
    static byte[] secretKeyFactory​(java.lang.String algorithm, java.security.spec.KeySpec keySpec)
    Secret Key Factory util
    static byte[] signatureSign​(java.lang.String algorithm, java.security.PrivateKey privateKey, byte[] rawData)
    Data Signature Encrypt
    static boolean signatureVerify​(java.lang.String algorithm, java.security.PublicKey publicKey, byte[] rawData, byte[] signedData)
    Data Signature Verification

    Methods inherited from class java.lang.Object

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

    • CryptoUtil

      public CryptoUtil()
  • Method Details

    • cipher

      public static byte[] cipher​(java.lang.String algorithm, java.security.Provider provider, int opmode, java.security.Key key, java.security.spec.AlgorithmParameterSpec params, byte[] data) throws javax.crypto.NoSuchPaddingException, java.security.NoSuchAlgorithmException, java.security.InvalidKeyException, java.security.InvalidAlgorithmParameterException, javax.crypto.IllegalBlockSizeException, javax.crypto.BadPaddingException
      Cipher util
      Parameters:
      algorithm - cipher algorithm
      provider - cipher provider, if do not need set null Security.getProvider(providerName)
      opmode - cipher mode
      key - crypto key
      params - Algorithm Parameter Spec, if do not need set null
      data - raw data
      Returns:
      data
      Throws:
      javax.crypto.NoSuchPaddingException - if transformation contains a padding scheme that is not available.
      java.security.NoSuchAlgorithmException - if transformation is null, empty, in an invalid format, or if no Provider supports a CipherSpi implementation for the specified algorithm.
      java.security.InvalidAlgorithmParameterException - if the given algorithm parameters are inappropriate for this cipher, or this cipher requires algorithm parameters and params is null, or the given algorithm parameters imply a cryptographic strength that would exceed the legal limits (as determined from the configured jurisdiction policy files).
      java.security.InvalidKeyException - if the given key is inappropriate for initializing this cipher, or its keysize exceeds the maximum allowable keysize (as determined from the configured jurisdiction policy files).
      javax.crypto.IllegalBlockSizeException - if this cipher is a block cipher, no padding has been requested (only in encryption mode), and the total input length of the data processed by this cipher is not a multiple of block size; or if this encryption algorithm is unable to process the input data provided.
      javax.crypto.BadPaddingException - if this cipher is in decryption mode, and (un)padding has been requested, but the decrypted data is not bounded by the appropriate padding bytes.
      javax.crypto.AEADBadTagException - – if this cipher is decrypting in an AEAD mode (such as GCM/CCM), and the received authentication tag does not match the calculated value.
      See Also:
      Cipher
    • cipher

      public static byte[] cipher​(java.lang.String algorithm, java.security.Provider provider, java.lang.String keyAlgorithm, byte[] data, byte[] key, int opmode, java.security.spec.AlgorithmParameterSpec params) throws javax.crypto.NoSuchPaddingException, java.security.NoSuchAlgorithmException, java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException, javax.crypto.IllegalBlockSizeException, javax.crypto.BadPaddingException
      Cipher util
      Parameters:
      algorithm - Cipher algorithm
      provider - cipher provider, if do not need set null Security.getProvider(providerName)
      keyAlgorithm - Secret key algorithm
      data - raw data
      key - crypto key
      opmode - cipher mode
      params - Algorithm Parameter Spec, if do not need set null
      Returns:
      data
      Throws:
      javax.crypto.NoSuchPaddingException - if transformation contains a padding scheme that is not available.
      java.security.NoSuchAlgorithmException - if transformation is null, empty, in an invalid format, or if no Provider supports a CipherSpi implementation for the specified algorithm.
      java.security.InvalidAlgorithmParameterException - if the given algorithm parameters are inappropriate for this cipher, or this cipher requires algorithm parameters and params is null, or the given algorithm parameters imply a cryptographic strength that would exceed the legal limits (as determined from the configured jurisdiction policy files).
      java.security.InvalidKeyException - if the given key is inappropriate for initializing this cipher, or its keysize exceeds the maximum allowable keysize (as determined from the configured jurisdiction policy files).
      javax.crypto.IllegalBlockSizeException - if this cipher is a block cipher, no padding has been requested (only in encryption mode), and the total input length of the data processed by this cipher is not a multiple of block size; or if this encryption algorithm is unable to process the input data provided.
      javax.crypto.BadPaddingException - if this cipher is in decryption mode, and (un)padding has been requested, but the decrypted data is not bounded by the appropriate padding bytes.
      javax.crypto.AEADBadTagException - – if this cipher is decrypting in an AEAD mode (such as GCM/CCM), and the received authentication tag does not match the calculated value.
      See Also:
      Cipher
    • md

      public static byte[] md​(java.lang.String algorithm, byte[] data) throws java.security.NoSuchAlgorithmException
      Message Digest util
      Parameters:
      algorithm - Message Digest Algorithm
      data - raw data
      Returns:
      data hash
      Throws:
      java.security.NoSuchAlgorithmException - if no Provider supports a MessageDigestSpi implementation for the specified algorithm.
      See Also:
      MessageDigest
    • mac

      public static byte[] mac​(byte[] data, byte[] salt, java.lang.String algorithm, java.lang.String keyAlgorithm) throws java.security.NoSuchAlgorithmException, java.security.InvalidKeyException
      Mac util
      Parameters:
      data - raw data
      salt - mac hash salt
      algorithm - mac hash algorithm
      keyAlgorithm - mac hash key algorithm
      Returns:
      data hash
      Throws:
      java.security.NoSuchAlgorithmException - if no Provider supports a MacSpi implementation for the specified algorithm.
      java.security.InvalidKeyException - if the given key is inappropriate for initializing this MAC.
      See Also:
      Mac
    • secretKeyFactory

      public static byte[] secretKeyFactory​(java.lang.String algorithm, java.security.spec.KeySpec keySpec) throws java.security.NoSuchAlgorithmException, java.security.spec.InvalidKeySpecException
      Secret Key Factory util
      Parameters:
      algorithm - Secret Key Factory algorithm
      keySpec - KeySpec impl e.g. PBEKeySpec
      Returns:
      KeySpec data result
      Throws:
      java.security.NoSuchAlgorithmException - if no Provider supports a SecretKeyFactorySpi implementation for the specified algorithm.
      java.security.spec.InvalidKeySpecException - if the given key specification is inappropriate for this secret-key factory to produce a secret key.
      See Also:
      SecretKeyFactory
    • keyPairGenerator

      public static java.security.KeyPair keyPairGenerator​(java.lang.String algorithm, int keysize) throws java.security.NoSuchAlgorithmException
      Asymmetric cryptography key pair generator
      Parameters:
      algorithm - Asymmetric cryptography key algorithm
      keysize - key size
      Returns:
      key pair
      Throws:
      java.security.NoSuchAlgorithmException - if no Provider supports a KeyPairGeneratorSpi implementation for the specified algorithm.
      See Also:
      KeyPairGenerator
    • signatureSign

      public static byte[] signatureSign​(java.lang.String algorithm, java.security.PrivateKey privateKey, byte[] rawData) throws java.security.NoSuchAlgorithmException, java.security.InvalidKeyException, java.security.SignatureException
      Data Signature Encrypt
      Parameters:
      algorithm - signature algorithm
      privateKey - signature private key
      rawData - data
      Returns:
      signed data
      Throws:
      java.security.NoSuchAlgorithmException - if no Provider supports a Signature implementation for the specified algorithm
      java.security.InvalidKeyException - if the key is invalid
      java.security.SignatureException - if this signature object is not initialized properly
      See Also:
      Signature
    • signatureVerify

      public static boolean signatureVerify​(java.lang.String algorithm, java.security.PublicKey publicKey, byte[] rawData, byte[] signedData) throws java.security.NoSuchAlgorithmException, java.security.InvalidKeyException, java.security.SignatureException
      Data Signature Verification
      Parameters:
      algorithm - signature algorithm
      publicKey - signature private key
      rawData - data
      signedData - signed data
      Returns:
      true is verified
      Throws:
      java.security.NoSuchAlgorithmException - if no Provider supports a Signature implementation for the specified algorithm
      java.security.InvalidKeyException - if the key is invalid
      java.security.SignatureException - if this signature object is not initialized properly
      See Also:
      Signature