Class CryptoSymmetricService
java.lang.Object
com.eurodyn.qlack.fuse.crypto.service.CryptoSymmetricService
Symmetric encryption/decryption utility methods.
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionbyte[]
Decrypts an encrypted message.byte[]
Decrypts an encrypted message prefixed with a 16 bytes IV.void
decrypt
(File encryptedFile, File plainFile, SecretKey key, byte[] iv, String cipherInstance, String keyAlgorithm) Decrypts a file, optionally decoding an appended IV.void
decrypt
(File encryptedFile, File plainFile, SecretKey key, String cipherInstance, String keyAlgorithm) Decrypts a file also decoding an appended IV.void
decrypt
(InputStream sourceStream, OutputStream targetStream, SecretKey key, byte[] iv, String cipherInstance, String keyAlgorithm) Decrypts a file, optionally decoding an appended IV.void
decrypt
(InputStream sourceStream, OutputStream targetStream, SecretKey key, String cipherInstance, String keyAlgorithm) Decrypts a file which is encrypted with a 16 byte IV prefixed.byte[]
encrypt
(byte[] plaintext, SecretKey key, byte[] iv, String cipherInstance, String keyAlgorithm, boolean prefixIv) Encrypts a plaintext with a given IV.byte[]
Encrypts a plaintext with an internally generated IV.void
encrypt
(File sourceFile, File targetFile, SecretKey key, byte[] iv, String cipherInstance, String keyAlgorithm, boolean prefixIv) Encrypts a file producing an encrypted file with optionally appending the IV.void
encrypt
(File sourceFile, File targetFile, SecretKey key, String cipherInstance, String keyAlgorithm) Encrypts a file producing an encrypted file prefixed with the internally generated IV.void
encrypt
(InputStream sourceStream, OutputStream targetStream, SecretKey key, byte[] iv, String cipherInstance, String keyAlgorithm, boolean prefixIv) Encrypts a stream producing an encrypted stream with optionally appending the IV.byte[]
Generates a random IV of 16 bytes.byte[]
generateIV
(int length) Generates a random IV of specific length.generateKey
(int keyLength, String algorithm) Generates a symmetric key.generateKey
(int keyLength, String algorithm, String provider) Generates a symmetric key.byte[]
ivFromString
(String iv) Generates the original IV from a Base64 encoded IV.keyFromString
(String key, String algorithm) Generates aSecretKey
from a Base64 encoded symmetric key.
-
Constructor Details
-
CryptoSymmetricService
public CryptoSymmetricService()
-
-
Method Details
-
generateKey
Generates a symmetric key.- Parameters:
keyLength
- the length of the keyalgorithm
- the algorithm to use, e.g. AES- Returns:
- the generated key
- Throws:
NoSuchAlgorithmException
- thrown when no algorithm is found for encryption
-
generateKey
public SecretKey generateKey(int keyLength, String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException Generates a symmetric key.- Parameters:
keyLength
- the length of the keyalgorithm
- the algorithm to use, e.g. AESprovider
- the provider for the algorithm, e.g. SUN- Returns:
- the generated key
- Throws:
NoSuchAlgorithmException
- thrown when no algorithm is found for encryptionNoSuchProviderException
-
keyFromString
Generates aSecretKey
from a Base64 encoded symmetric key.- Parameters:
key
- the Base64 encoded version of the keyalgorithm
- the algorithm to use, e.g. AES- Returns:
- the generated secret key
-
generateIV
public byte[] generateIV()Generates a random IV of 16 bytes.- Returns:
- the bytes of the generated IV
-
generateIV
public byte[] generateIV(int length) Generates a random IV of specific length.- Parameters:
length
- the length of the IV- Returns:
- the bytes of the generated IV
-
ivFromString
Generates the original IV from a Base64 encoded IV.- Parameters:
iv
- the IV to decode- Returns:
- the bytes of the decoded IV
-
encrypt
public byte[] encrypt(byte[] plaintext, SecretKey key, byte[] iv, String cipherInstance, String keyAlgorithm, boolean prefixIv) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidAlgorithmParameterException, InvalidKeyException, IOException Encrypts a plaintext with a given IV.- Parameters:
plaintext
- The plaintext to encryptkey
- the key to use for encryptioniv
- the encryption IVcipherInstance
- the cipher instance to use, e.g. "AES/CBC/PKCS5Padding"keyAlgorithm
- the algorithm for the secret key, e.g. "AES"prefixIv
- whether to prefix the IV on the return value or not- Returns:
- the ciphertext optionally prefixed with the IV
- Throws:
NoSuchPaddingException
- thrown when the provided cipherInstance is not validNoSuchAlgorithmException
- thrown when no algorithm is found for encryptionInvalidAlgorithmParameterException
- thrown when the found algorithm cannot be executedInvalidKeyException
- thrown when the provided key is invalidIOException
- thrown when something unexpected happens
-
encrypt
public byte[] encrypt(byte[] plaintext, SecretKey key, String cipherInstance, String keyAlgorithm) throws NoSuchPaddingException, InvalidKeyException, NoSuchAlgorithmException, InvalidAlgorithmParameterException, IOException Encrypts a plaintext with an internally generated IV.- Parameters:
plaintext
- the plaintext to encryptkey
- the key to use for encryptioncipherInstance
- the cipher instance to use, e.g. "AES/CBC/PKCS5Padding"keyAlgorithm
- the algorithm for the secret key, e.g. "AES"- Returns:
- the ciphertext prefixed with the IV
- Throws:
NoSuchPaddingException
- thrown when the provided cipherInstance is not validNoSuchAlgorithmException
- thrown when no algorithm is found for encryptionInvalidAlgorithmParameterException
- thrown when the found algorithm cannot be executedInvalidKeyException
- thrown when the provided key is invalidIOException
- thrown when something unexpected happens
-
encrypt
public void encrypt(File sourceFile, File targetFile, SecretKey key, String cipherInstance, String keyAlgorithm) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidAlgorithmParameterException, InvalidKeyException, IOException Encrypts a file producing an encrypted file prefixed with the internally generated IV.- Parameters:
sourceFile
- the source file to encrypttargetFile
- the target, encrypted file to producekey
- the key to use for encryptioncipherInstance
- the cipher instance to use, e.g. "AES/CBC/PKCS5Padding"keyAlgorithm
- the algorithm for the secret key, e.g. "AES"- Throws:
NoSuchPaddingException
- thrown when the provided cipherInstance is not validNoSuchAlgorithmException
- thrown when no algorithm is found for encryptionInvalidAlgorithmParameterException
- thrown when the found algorithm cannot be executedInvalidKeyException
- thrown when the provided key is invalidIOException
- thrown when something unexpected happens
-
encrypt
public void encrypt(File sourceFile, File targetFile, SecretKey key, byte[] iv, String cipherInstance, String keyAlgorithm, boolean prefixIv) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidAlgorithmParameterException, InvalidKeyException, IOException Encrypts a file producing an encrypted file with optionally appending the IV.- Parameters:
sourceFile
- the source file to encrypttargetFile
- the target, encrypted file to producekey
- the key to use for encryptioniv
- the IV to usecipherInstance
- the cipher instance to use, e.g. "AES/CBC/PKCS5Padding"keyAlgorithm
- the algorithm for the secret key, e.g. "AES"prefixIv
- whether to prefix the IV on the return value or not- Throws:
NoSuchPaddingException
- thrown when the provided cipherInstance is not validNoSuchAlgorithmException
- thrown when no algorithm is found for encryptionInvalidAlgorithmParameterException
- thrown when the found algorithm cannot be executedInvalidKeyException
- thrown when the provided key is invalidIOException
- thrown when something unexpected happens
-
encrypt
public void encrypt(InputStream sourceStream, OutputStream targetStream, SecretKey key, byte[] iv, String cipherInstance, String keyAlgorithm, boolean prefixIv) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidAlgorithmParameterException, InvalidKeyException, IOException Encrypts a stream producing an encrypted stream with optionally appending the IV.- Parameters:
sourceStream
- the source stream to encrypttargetStream
- the target, encrypted stream to populatekey
- the key to use for encryptioniv
- the IV to usecipherInstance
- the cipher instance to use, e.g. "AES/CBC/PKCS5Padding"keyAlgorithm
- the algorithm for the secret key, e.g. "AES"prefixIv
- whether to prefix the IV on the return value or not- Throws:
NoSuchPaddingException
- thrown when the provided cipherInstance is not validNoSuchAlgorithmException
- thrown when no algorithm is found for encryptionInvalidAlgorithmParameterException
- thrown when the found algorithm cannot be executedInvalidKeyException
- thrown when the provided key is invalidIOException
- thrown when something unexpected happens
-
decrypt
public void decrypt(File encryptedFile, File plainFile, SecretKey key, String cipherInstance, String keyAlgorithm) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidAlgorithmParameterException, InvalidKeyException, IOException Decrypts a file also decoding an appended IV.- Parameters:
encryptedFile
- the encrypted file to decryptplainFile
- the decrypted file to producekey
- the key to use for decryptioncipherInstance
- the cipher instance to use, e.g. "AES/CBC/PKCS5Padding"keyAlgorithm
- the algorithm for the secret key, e.g. "AES"- Throws:
NoSuchPaddingException
- thrown when the provided cipherInstance is not validNoSuchAlgorithmException
- thrown when no algorithm is found for encryptionInvalidAlgorithmParameterException
- thrown when the found algorithm cannot be executedInvalidKeyException
- thrown when the provided key is invalidIOException
- thrown when something unexpected happens
-
decrypt
public void decrypt(File encryptedFile, File plainFile, SecretKey key, byte[] iv, String cipherInstance, String keyAlgorithm) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidAlgorithmParameterException, InvalidKeyException, IOException Decrypts a file, optionally decoding an appended IV.- Parameters:
encryptedFile
- the encrypted file to decryptplainFile
- the decrypted file to producekey
- the key to use for decryptioniv
- the IV with which this file was encrypted. If left null, the IV will be decoded from the 16 first bytes of `encryptedFile`cipherInstance
- the cipher instance to use, e.g. "AES/CBC/PKCS5Padding"keyAlgorithm
- the algorithm for the secret key, e.g. "AES"- Throws:
NoSuchPaddingException
- thrown when the provided cipherInstance is not validNoSuchAlgorithmException
- thrown when no algorithm is found for encryptionInvalidAlgorithmParameterException
- thrown when the found algorithm cannot be executedInvalidKeyException
- thrown when the provided key is invalidIOException
- thrown when something unexpected happens
-
decrypt
public void decrypt(InputStream sourceStream, OutputStream targetStream, SecretKey key, String cipherInstance, String keyAlgorithm) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidAlgorithmParameterException, InvalidKeyException, IOException Decrypts a file which is encrypted with a 16 byte IV prefixed.- Parameters:
sourceStream
- the encrypted stream to decrypttargetStream
- the decrypted stream to populatekey
- the key to use for decryption. the 16 first bytes of `encryptedFile`cipherInstance
- the cipher instance to use, e.g. "AES/CBC/PKCS5Padding"keyAlgorithm
- the algorithm for the secret key, e.g. "AES"- Throws:
NoSuchPaddingException
- thrown when the provided cipherInstance is not validNoSuchAlgorithmException
- thrown when no algorithm is found for encryptionInvalidAlgorithmParameterException
- thrown when the found algorithm cannot be executedInvalidKeyException
- thrown when the provided key is invalidIOException
- thrown when something unexpected happens
-
decrypt
public void decrypt(InputStream sourceStream, OutputStream targetStream, SecretKey key, byte[] iv, String cipherInstance, String keyAlgorithm) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidAlgorithmParameterException, InvalidKeyException, IOException Decrypts a file, optionally decoding an appended IV.- Parameters:
sourceStream
- the encrypted stream to decrypttargetStream
- the decrypted stream to populatekey
- the key to use for decryptioniv
- the IV with which this file was encrypted. If left null, the IV will be decoded from the 16 first bytes of `encryptedFile`cipherInstance
- the cipher instance to use, e.g. "AES/CBC/PKCS5Padding"keyAlgorithm
- the algorithm for the secret key, e.g. "AES"- Throws:
NoSuchPaddingException
- thrown when the provided cipherInstance is not validNoSuchAlgorithmException
- thrown when no algorithm is found for encryptionInvalidAlgorithmParameterException
- thrown when the found algorithm cannot be executedInvalidKeyException
- thrown when the provided key is invalidIOException
- thrown when something unexpected happens
-
decrypt
public byte[] decrypt(byte[] ciphertext, SecretKey key, String cipherInstance, String keyAlgorithm) throws NoSuchPaddingException, InvalidKeyException, NoSuchAlgorithmException, InvalidAlgorithmParameterException, IOException Decrypts an encrypted message prefixed with a 16 bytes IV.- Parameters:
ciphertext
- the encrypted message to decryptkey
- the key to decrypt withcipherInstance
- the cipher instance to use, e.g. "AES/CBC/PKCS5Padding"keyAlgorithm
- the algorithm for the secret key, e.g. "AES"- Returns:
- the bytes of the decrypted message
- Throws:
NoSuchPaddingException
- thrown when the provided cipherInstance is not validNoSuchAlgorithmException
- thrown when no algorithm is found for encryptionInvalidAlgorithmParameterException
- thrown when the found algorithm cannot be executedInvalidKeyException
- thrown when the provided key is invalidIOException
- thrown when something unexpected happens
-
decrypt
public byte[] decrypt(byte[] ciphertext, SecretKey key, byte[] iv, String cipherInstance, String keyAlgorithm) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidAlgorithmParameterException, InvalidKeyException, IOException Decrypts an encrypted message.- Parameters:
ciphertext
- the encrypted message to decryptkey
- the key to decrypt withcipherInstance
- the cipher instance to use, e.g. "AES/CBC/PKCS5Padding"keyAlgorithm
- the algorithm for the secret key, e.g. "AES"iv
- the IV to use- Returns:
- the bytes of the decrypted message
- Throws:
NoSuchPaddingException
- thrown when the provided cipherInstance is not validNoSuchAlgorithmException
- thrown when no algorithm is found for encryptionInvalidAlgorithmParameterException
- thrown when the found algorithm cannot be executedInvalidKeyException
- thrown when the provided key is invalidIOException
- thrown when something unexpected happens
-