Tomcat中的org.jasypt.exceptions.EncryptionOperationNotPossibleException

Eri*_*rik 10 java tomcat jasypt

我正在使用Jasypt加密库来加密/解密某些文本.此代码嵌入在WAR文件中并部署到服务器.

在本地运行时,在单元测试中,加密/解密周期完美地运行.我使用Jetty开发应用程序.该代码在该服务器中完美运行.出于某种原因,部署到Tomcat会导致以下异常:

仅供参考,我在本地和服务器环境中都安装了强大的加密库,我使用的是最新的1.6版本(补丁级别25).

org.jasypt.exceptions.EncryptionOperationNotPossibleException

该例外没有消息.

代码是完全对称的.我把它贴在这里检查.以下是相关位:

我找到了一个旧的Nabble帖子,其中一个用户有一个非常类似的问题.代码在除Tomcat内部以外的任 没有解决方案.

任何见解都将非常受欢迎.

**更新:**在我的本地系统上运行Tomcat,它似乎工作.所以我的服务器有一些东西.在服务器上,我在Windows Server 2008上使用64位JVM.我在本地使用32位JVM(由于我的系统有点旧).我想知道这是否与这个问题有关.

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

@Override
public <T extends Serializable> 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> 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);
    }
}
Run Code Online (Sandbox Code Playgroud)

Nat*_*ger 5

以下是文档的链接:http: //www.jasypt.org/faq.html#i-keep-on-receiving-encryption-operation-not-possible

  • 加密和解密配置是否相同
  • 检查以确保表格列足够大
  • Base64编码和urlencoding可能会发生冲突,因此必须正确完成.