JCEEncryptorpublic class JCEEncryptor extends Object implements SecurableTopLink reference implementation for password encryption. |
Fields Summary |
---|
private Cipher | m_cipher | private final String | m_algorithm | private final String | m_padding |
Constructors Summary |
---|
public JCEEncryptor()
/*
* We want to force the initialization of the cipher here. This is a fix
* for bug #2696486.
* JDev with JDK 1.3 in some cases will allow a JCE object to be created
* when it shouldn't. That is, JDev includes an incompletely configured JCE
* library for JDK 1.3, meaning JCE will not run properly in the VM. So, JDev
* allows you to create a JCEEncryptor object, but eventually throw's
* errors when trying to make JCE library calls from encryptPassword.
*
* Confusing??? Well, don't move this code before talking to Guy first!
*/
m_cipher = Cipher.getInstance(m_padding);
|
Methods Summary |
---|
public synchronized java.lang.String | decryptPassword(java.lang.String encryptedPswd)Decrypts a string. Will throw a validation exception.
Handles backwards compatability for older encrypted strings.
String password = "";
try {
m_cipher.init(Cipher.DECRYPT_MODE, Synergizer.getMultitasker(m_algorithm));
byte[] bytePassword = Helper.buildBytesFromHexString(encryptedPswd);
ByteArrayInputStream bais = new ByteArrayInputStream(bytePassword);
CipherInputStream cis = new CipherInputStream(bais, m_cipher);
ObjectInputStream ois = new ObjectInputStream(cis);
password = (String)ois.readObject();
ois.close();
} catch (IOException e) {
// JCE 1.2.2 couldn't decrypt it, assume clear text
password = encryptedPswd;
} catch (ArrayIndexOutOfBoundsException e) {
// JCE 1.2.1 couldn't decrypt it, assume clear text
password = encryptedPswd;
} catch (ConversionException e) {
// Never prepared (buildBytesFromHexString failed), assume clear text
password = encryptedPswd;
} catch (Exception e) {
throw ValidationException.errorDecryptingPassword(e);
}
return password;
| public synchronized java.lang.String | encryptPassword(java.lang.String password)Encrypts a string. Will throw a validation exception.
try {
m_cipher.init(Cipher.ENCRYPT_MODE, Synergizer.getMultitasker(m_algorithm));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
CipherOutputStream cos = new CipherOutputStream(baos, m_cipher);
ObjectOutputStream oos = new ObjectOutputStream(cos);
oos.writeObject(password);
oos.flush();
oos.close();
return Helper.buildHexStringFromBytes(baos.toByteArray());
} catch (Exception e) {
throw ValidationException.errorEncryptingPassword(e);
}
|
|