Java Jasypt库的BadPaddingException

Java Jasypt库的BadPaddingException,java,encryption,junit3,jasypt,badpaddingexception,Java,Encryption,Junit3,Jasypt,Badpaddingexception,我不确定这是一个错误还是我犯了一些错误。无论哪种情况,我都需要别人的帮助 我们已经将Jasypt与Spring2.05合并到我们的web应用程序中,在该应用程序中,我们正在对属性文件中的一些密码进行加密。这件事在Web应用程序上运行得很顺利。我们甚至可以使用BasicTextEncrypor.decrypt(方法)从主方法解密密码 然而,在执行JUnit测试用例时,我们遇到了问题。一旦我们运行测试套件,我们就会得到以下堆栈跟踪 java.lang.reflect.InvocationTarget

我不确定这是一个错误还是我犯了一些错误。无论哪种情况,我都需要别人的帮助

我们已经将Jasypt与Spring2.05合并到我们的web应用程序中,在该应用程序中,我们正在对属性文件中的一些密码进行加密。这件事在Web应用程序上运行得很顺利。我们甚至可以使用BasicTextEncrypor.decrypt(方法)从主方法解密密码

然而,在执行JUnit测试用例时,我们遇到了问题。一旦我们运行测试套件,我们就会得到以下堆栈跟踪

java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestLoader.getTest(JUnit3TestLoader.java:108)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestLoader.loadTests(JUnit3TestLoader.java:59)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.lang.ExceptionInInitializerError
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at junit.framework.TestSuite.createTest(TestSuite.java:131)
at junit.framework.TestSuite.addTestMethod(TestSuite.java:114)
at junit.framework.TestSuite.<init>(TestSuite.java:75)
at junit.framework.TestSuite.addTestSuite(TestSuite.java:101)
at com.abc.test.dao.AllTests.suite(AllTests.java:104)
... 10 more
Caused by: org.jasypt.exceptions.EncryptionOperationNotPossibleException
at org.jasypt.encryption.pbe.StandardPBEByteEncryptor.decrypt(StandardPBEByteEncryptor.java:981)
at org.jasypt.encryption.pbe.StandardPBEStringEncryptor.decrypt(StandardPBEStringEncryptor.java:725)
at org.jasypt.util.text.BasicTextEncryptor.decrypt(BasicTextEncryptor.java:112)
at org.jasypt.properties.PropertyValueEncryptionUtils.decrypt(PropertyValueEncryptionUtils.java:78)
at org.jasypt.spring.properties.EncryptablePropertyPlaceholderConfigurer.convertPropertyValue(EncryptablePropertyPlaceholderConfigurer.java:115)
at org.springframework.beans.factory.config.PropertyResourceConfigurer.convertProperties(PropertyResourceConfigurer.java:95)
at org.springframework.beans.factory.config.PropertyResourceConfigurer.postProcessBeanFactory(PropertyResourceConfigurer.java:72)
at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:467)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:334)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:91)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:75)
at com.abc.test.ApplicationContextUtils.getTestApplicationContext(ApplicationContextUtils.java:18)
at com.abc.test.BaseTestCase.<clinit>(BaseTestCase.java:45)
java.lang.reflect.InvocationTargetException
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)中
位于java.lang.reflect.Method.invoke(Method.java:597)
位于org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestLoader.getTest(JUnit3TestLoader.java:108)
位于org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestLoader.loadTests(JUnit3TestLoader.java:59)
位于org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452)
位于org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
位于org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
位于org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
原因:java.lang.ExceptionInInitializeError
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:513)
位于junit.framework.TestSuite.createTest(TestSuite.java:131)
位于junit.framework.TestSuite.addTestMethod(TestSuite.java:114)
位于junit.framework.TestSuite.(TestSuite.java:75)
位于junit.framework.TestSuite.addTestSuite(TestSuite.java:101)
位于com.abc.test.dao.AllTests.suite(AllTests.java:104)
... 10多
原因:org.jasypt.exceptions.EncryptionOperationNotPossibleException
在org.jasypt.encryption.pbe.StandardPBEByteEncryptor.decrypt上(StandardPBEByteEncryptor.java:981)
在org.jasypt.encryption.pbe.StandardPBEStringEncryptor.decrypt上(StandardPBEStringEncryptor.java:725)
位于org.jasypt.util.text.BasicTextEncryptor.decrypt(BasicTextEncryptor.java:112)
位于org.jasypt.properties.PropertyValueEncryptionUtils.decrypt(PropertyValueEncryptionUtils.java:78)
位于org.jasypt.spring.properties.EncryptablePropertyPlaceHolderConfigure.convertPropertyValue(EncryptablePropertyPlaceHolderConfigure.java:115)
位于org.springframework.beans.factory.config.PropertyResourceConfiger.convertProperties(PropertyResourceConfiger.java:95)
位于org.springframework.beans.factory.config.PropertyResourceConfiger.postProcessBeanFactory(PropertyResourceConfiger.java:72)
位于org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:467)
位于org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:334)
位于org.springframework.context.support.ClassPathXmlApplicationContext。(ClassPathXmlApplicationContext.java:91)
位于org.springframework.context.support.ClassPathXmlApplicationContext。(ClassPathXmlApplicationContext.java:75)
在com.abc.test.ApplicationContextUtils.getTestApplicationContext(ApplicationContextUtils.java:18)上
在com.abc.test.BaseTestCase上。(BaseTestCase.java:45)

我深入研究了Jasypt的源代码,了解到幕后抛出了javax.crypto.BadPaddingException。我不知道为什么直接从主方法进行相同的调用和通过JUnit框架执行相同的操作之间有区别,其他所有操作(例如密码)都是相同的。

当字符串使用不同的JVM版本加密而不是使用不同的JVM版本解密时,也会发生此异常。在双方使用相同的JVM版本(加密/解密;服务器/客户端)对我们的案例有帮助。

你找到答案了吗?在我的案例中,这种情况发生在Ubuntu VM上的加密,现在我尝试在Mac OS X上解密密码。相同的异常,两者之间没有变化。