Package org.jets3t.service.security
Class EncryptionUtil
java.lang.Object
org.jets3t.service.security.EncryptionUtil
Utility class to handle encryption and decryption in the JetS3t suite.
This class uses properties obtained through Jets3tProperties
.
For more information on these properties please refer to
JetS3t Configuration
- Author:
- James Murty
-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionEncryptionUtil
(String encryptionKey) Constructs class configured with the provided password, and set up to use the default encryption algorithm PBEWithMD5AndDES.EncryptionUtil
(String encryptionKey, String algorithm, String version) Constructs class configured with the provided password, and set up to use the encryption method specified. -
Method Summary
Modifier and TypeMethodDescriptionstatic byte[]
Convert a PEM encoded RSA certificate file into a DER format byte array.byte[]
decrypt
(byte[] data) Decrypts byte data to bytes.byte[]
decrypt
(byte[] data, int startIndex, int endIndex) Decrypts a byte data range to bytes.decrypt
(InputStream is) Wraps an input stream in an decrypting cipher stream.decrypt
(OutputStream os) Wraps an output stream in a decrypting cipher stream.decryptString
(byte[] data) Decrypts byte data to a UTF-8 string.decryptString
(byte[] data, int startIndex, int endIndex) Decrypts a UTF-8 string.byte[]
encrypt
(byte[] data) Encrypts byte data to bytes.encrypt
(InputStream is) Wraps an input stream in an encrypting cipher stream.encrypt
(OutputStream os) Wraps an output stream in an encrypting cipher stream.byte[]
Encrypts a UTF-8 string to byte data.long
getEncryptedOutputSize
(long inputSize) Returns an estimate of the number of bytes that will result when data of the given length is encrypted.static boolean
isCipherAvailableForUse
(String cipher) Returns true if the given cipher is available and can be used by this encryption utility.static String[]
listAvailablePbeCiphers
(boolean testAvailability) Lists the PBE ciphers available on the system, optionally eliminating those ciphers that are apparently available but cannot actually be used (perhaps due to the lack of export-grade JCE settings).static Provider[]
static void
static byte[]
signWithRsaSha1
(byte[] derPrivateKeyBytes, byte[] dataToSign) Generate an RSA SHA1 signature of the given data using the given private key DER certificate.
-
Field Details
-
DEFAULT_VERSION
- See Also:
-
DEFAULT_ALGORITHM
- See Also:
-
-
Constructor Details
-
EncryptionUtil
public EncryptionUtil(String encryptionKey, String algorithm, String version) throws InvalidKeyException, NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeySpecException Constructs class configured with the provided password, and set up to use the encryption method specified.- Parameters:
encryptionKey
- the password to use for encryption/decryption.algorithm
- the Java name of an encryption algorithm to use, eg PBEWithMD5AndDESversion
- the version of encyption to use, for historic and future compatibility. Unless using an historic version, this should always beDEFAULT_VERSION
- Throws:
InvalidKeyException
NoSuchAlgorithmException
NoSuchPaddingException
InvalidKeySpecException
-
EncryptionUtil
public EncryptionUtil(String encryptionKey) throws InvalidKeyException, NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeySpecException Constructs class configured with the provided password, and set up to use the default encryption algorithm PBEWithMD5AndDES.- Parameters:
encryptionKey
- the password to use for encryption/decryption.- Throws:
InvalidKeyException
NoSuchAlgorithmException
NoSuchPaddingException
InvalidKeySpecException
-
-
Method Details
-
encrypt
public byte[] encrypt(String data) throws IllegalStateException, IllegalBlockSizeException, BadPaddingException, UnsupportedEncodingException, InvalidKeySpecException, InvalidKeyException, InvalidAlgorithmParameterException, NoSuchAlgorithmException, NoSuchPaddingException Encrypts a UTF-8 string to byte data.- Parameters:
data
- data to encrypt.- Returns:
- encrypted data.
- Throws:
IllegalStateException
IllegalBlockSizeException
BadPaddingException
UnsupportedEncodingException
InvalidKeySpecException
InvalidKeyException
InvalidAlgorithmParameterException
NoSuchAlgorithmException
NoSuchPaddingException
-
decryptString
public String decryptString(byte[] data) throws InvalidKeyException, InvalidAlgorithmParameterException, UnsupportedEncodingException, IllegalStateException, IllegalBlockSizeException, BadPaddingException, NoSuchAlgorithmException, NoSuchPaddingException Decrypts byte data to a UTF-8 string.- Parameters:
data
- data to decrypt.- Returns:
- UTF-8 string of decrypted data.
- Throws:
InvalidKeyException
InvalidAlgorithmParameterException
UnsupportedEncodingException
IllegalStateException
IllegalBlockSizeException
BadPaddingException
NoSuchAlgorithmException
NoSuchPaddingException
-
decryptString
public String decryptString(byte[] data, int startIndex, int endIndex) throws InvalidKeyException, InvalidAlgorithmParameterException, UnsupportedEncodingException, IllegalStateException, IllegalBlockSizeException, BadPaddingException, NoSuchAlgorithmException, NoSuchPaddingException Decrypts a UTF-8 string.- Parameters:
data
- data to decrypt.startIndex
- start index of data to decrypt.endIndex
- end index of data to decrypt.- Returns:
- UTF-8 string of decrypted data.
- Throws:
InvalidKeyException
InvalidAlgorithmParameterException
UnsupportedEncodingException
IllegalStateException
IllegalBlockSizeException
BadPaddingException
NoSuchAlgorithmException
NoSuchPaddingException
-
encrypt
public byte[] encrypt(byte[] data) throws IllegalStateException, IllegalBlockSizeException, BadPaddingException, InvalidKeyException, InvalidAlgorithmParameterException, NoSuchAlgorithmException, NoSuchPaddingException Encrypts byte data to bytes.- Parameters:
data
- data to encrypt.- Returns:
- encrypted data.
- Throws:
IllegalStateException
IllegalBlockSizeException
BadPaddingException
InvalidKeyException
InvalidAlgorithmParameterException
NoSuchAlgorithmException
NoSuchPaddingException
-
decrypt
public byte[] decrypt(byte[] data) throws InvalidKeyException, InvalidAlgorithmParameterException, IllegalStateException, IllegalBlockSizeException, BadPaddingException, NoSuchAlgorithmException, NoSuchPaddingException Decrypts byte data to bytes.- Parameters:
data
- data to decrypt- Returns:
- decrypted data.
- Throws:
InvalidKeyException
InvalidAlgorithmParameterException
IllegalStateException
IllegalBlockSizeException
BadPaddingException
NoSuchAlgorithmException
NoSuchPaddingException
-
decrypt
public byte[] decrypt(byte[] data, int startIndex, int endIndex) throws InvalidKeyException, InvalidAlgorithmParameterException, IllegalStateException, IllegalBlockSizeException, BadPaddingException, NoSuchAlgorithmException, NoSuchPaddingException Decrypts a byte data range to bytes.- Parameters:
data
-startIndex
-endIndex
-- Returns:
- decrypted data.
- Throws:
InvalidKeyException
InvalidAlgorithmParameterException
IllegalStateException
IllegalBlockSizeException
BadPaddingException
NoSuchAlgorithmException
NoSuchPaddingException
-
encrypt
public CipherInputStream encrypt(InputStream is) throws InvalidKeyException, InvalidAlgorithmParameterException, NoSuchAlgorithmException, NoSuchPaddingException Wraps an input stream in an encrypting cipher stream.- Parameters:
is
-- Returns:
- encrypting cipher input stream.
- Throws:
InvalidKeyException
InvalidAlgorithmParameterException
NoSuchAlgorithmException
NoSuchPaddingException
-
decrypt
public CipherInputStream decrypt(InputStream is) throws InvalidKeyException, InvalidAlgorithmParameterException, NoSuchAlgorithmException, NoSuchPaddingException Wraps an input stream in an decrypting cipher stream.- Parameters:
is
-- Returns:
- decrypting cipher input stream.
- Throws:
InvalidKeyException
InvalidAlgorithmParameterException
NoSuchAlgorithmException
NoSuchPaddingException
-
encrypt
public CipherOutputStream encrypt(OutputStream os) throws InvalidKeyException, InvalidAlgorithmParameterException, NoSuchAlgorithmException, NoSuchPaddingException Wraps an output stream in an encrypting cipher stream.- Parameters:
os
-- Returns:
- encrypting cipher output stream.
- Throws:
InvalidKeyException
InvalidAlgorithmParameterException
NoSuchAlgorithmException
NoSuchPaddingException
-
decrypt
public CipherOutputStream decrypt(OutputStream os) throws InvalidKeyException, InvalidAlgorithmParameterException, NoSuchAlgorithmException, NoSuchPaddingException Wraps an output stream in a decrypting cipher stream.- Parameters:
os
-- Returns:
- decrypting cipher output stream.
- Throws:
InvalidKeyException
InvalidAlgorithmParameterException
NoSuchAlgorithmException
NoSuchPaddingException
-
getEncryptedOutputSize
public long getEncryptedOutputSize(long inputSize) throws InvalidKeyException, InvalidAlgorithmParameterException, NoSuchAlgorithmException, NoSuchPaddingException Returns an estimate of the number of bytes that will result when data of the given length is encrypted. The accuracy of this estimate may depend on the cipher you are using, so be wary of trusting this estimate without supporting evidence.- Parameters:
inputSize
- The number of bytes you intend to encrypt.- Returns:
- an estimate of the number of bytes that will be generated by the encryption cipher for the given number of bytes of input.
- Throws:
InvalidKeyException
InvalidAlgorithmParameterException
NoSuchAlgorithmException
NoSuchPaddingException
-
getAlgorithm
- Returns:
- the Java name of the cipher algorithm being used by this class.
-
isCipherAvailableForUse
Returns true if the given cipher is available and can be used by this encryption utility. To determine whether the cipher can actually be used a test string is encrypted using the cipher.- Parameters:
cipher
-- Returns:
- true if the cipher is available and can be used, false otherwise.
-
listAvailablePbeCiphers
Lists the PBE ciphers available on the system, optionally eliminating those ciphers that are apparently available but cannot actually be used (perhaps due to the lack of export-grade JCE settings).- Parameters:
testAvailability
- if true each apparently available cipher is tested and only those that passisCipherAvailableForUse(String)
are returned.- Returns:
- a list of all the available PBE cipher names on the system.
-
listAvailableProviders
-
signWithRsaSha1
public static byte[] signWithRsaSha1(byte[] derPrivateKeyBytes, byte[] dataToSign) throws NoSuchAlgorithmException, InvalidKeyException, SignatureException, InvalidKeySpecException, NoSuchProviderException Generate an RSA SHA1 signature of the given data using the given private key DER certificate. Based on example code from: http://www.java2s.com/Tutorial/Java/0490__Security/RSASignatureGeneration.htm http://forums.sun.com/thread.jspa?threadID=5175986 -
convertRsaPemToDer
Convert a PEM encoded RSA certificate file into a DER format byte array.- Parameters:
is
- Input stream for PEM encoded RSA certificate data.- Returns:
- The RSA certificate data in DER format.
- Throws:
IOException
-
main
- Throws:
Exception
-