org.jasypt.exceptions.EncryptionOperationNotPossibleException в Tomcat

Я использую библиотеку шифрования Jasypt для шифрования / дешифрования некоторого текста. Этот код встроен в файл WAR и развернут на сервере.

При локальном запуске и в модульных тестах цикл шифрования / дешифрования работает отлично. Я использую Jetty для разработки приложения. Код отлично работает на этом сервере. По какой-то причине развертывание на Tomcat нарушает его за следующим исключением:

К вашему сведению, у меня установлены библиотеки надежного шифрования как в моей локальной, так и в серверной среде, и я ' m с использованием последней версии 1.6 (уровень исправления 25).

org.jasypt.exceptions.EncryptionOperationNotPossibleException

Исключение не имеет сообщения.

Код полностью симметричен. Наклеил сюда для проверки. Вот соответствующие фрагменты:

Я нашел один старый пост Nabble , где у пользователя была очень похожая проблема. Код работал везде, кроме Tomcat. Никакого решения не было предложено.

Любые идеи были бы очень признательны.

** Обновление: ** Запуск в Tomcat в моей локальной системе, похоже, работает. Так что есть кое-что о моем сервере. На сервере я использую 64-битную JVM в Windows Server 2008. Я использую 32-битную JVM локально (из-за того, что моя система немного старше). Интересно, имеет ли это какое-то отношение к проблеме.

public void initializeService() {
    binaryEncryptor = new BasicBinaryEncryptor();
    binaryEncryptor.setPassword(keyBase64);
}

@Override
public  String simpleEncrypt(T objectToEncrypt) throws EncryptionException {
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    try {
        ObjectOutputStream oos = new ObjectOutputStream(bos);
        oos.writeObject(objectToEncrypt);

        byte[] bytes = binaryEncryptor.encrypt(bos.toByteArray());
        return new String(Base64.encodeBase64(bytes));
    } catch (IOException e) {
        LOGGER.error("failed to encrypt String: " + e.getMessage());
        throw new EncryptionException(e.getMessage(), e);
    } catch (Exception e) {
        LOGGER.error("failed to encrypt String: " + e.getMessage());
        throw new EncryptionException(e.getMessage(), e);
    }
};

@SuppressWarnings("unchecked")
@Override
public  T simpleDecrypt(String objectToDecrypt) throws EncryptionException {
    try {
        byte[] bytes = Base64.decodeBase64(objectToDecrypt);
        byte[] decryptedBytes = binaryEncryptor.decrypt(bytes);

        ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(decryptedBytes));
        T object = (T)ois.readObject();
        return object;
    } catch (IOException e) {
        LOGGER.error("failed to decrypt String: '" + objectToDecrypt + "', mesage = " + e.getMessage());
        throw new EncryptionException(e.getMessage(), e);
    } catch (Exception e) {
        LOGGER.error("failed to decrypt String: '" + objectToDecrypt + "', mesage = " + e.getMessage());
        throw new EncryptionException(e.getMessage(), e);
    }
}

10
задан Erik 25 May 2011 в 03:24
поделиться