Class CryptoUtil

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

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

    • NONPROVIDER

      public static final Provider NONPROVIDER
      non provider
  • Constructor Details

    • CryptoUtil

      public CryptoUtil()
  • Method Details

    • cipher

      Cipher util
      Parameters:
      algorithm - cipher algorithm
      provider - cipher provider, if you do not need this set null or CryptoUtil.NONPROVIDER see Security.getProvider(providerName)
      opmode - cipher mode
      key - crypto key
      params - Algorithm Parameter Spec, if you do not need this set null
      data - raw data
      Returns:
      data
      Throws:
      NoSuchPaddingException - if transformation contains a padding scheme that is not available.
      NoSuchAlgorithmException - if transformation is null, empty, in an invalid format, or if no Provider supports a CipherSpi implementation for the specified algorithm.
      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).
      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).
      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.
      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.
      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(String algorithm, String providerName, int opmode, Key key, AlgorithmParameterSpec params, byte[] data) throws InvalidAlgorithmParameterException, NoSuchPaddingException, IllegalBlockSizeException, NoSuchAlgorithmException, BadPaddingException, InvalidKeyException
      Cipher util
      Parameters:
      algorithm - cipher algorithm
      providerName - cipher provider name, if you do not need this set null or ""
      opmode - cipher mode
      key - crypto key
      params - Algorithm Parameter Spec, if you do not need this set null
      data - raw data
      Returns:
      data
      Throws:
      NoSuchPaddingException - if transformation contains a padding scheme that is not available.
      NoSuchAlgorithmException - if transformation is null, empty, in an invalid format, or if no Provider supports a CipherSpi implementation for the specified algorithm.
      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).
      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).
      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.
      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.
      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(String algorithm, byte[] data) throws NoSuchAlgorithmException
      Message Digest util
      Parameters:
      algorithm - Message Digest Algorithm
      data - raw data
      Returns:
      data hash
      Throws:
      NoSuchAlgorithmException - if no Provider supports a MessageDigestSpi implementation for the specified algorithm.
      See Also:
      MessageDigest
    • mac

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

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

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

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

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