java.security.NoSuchAlgorithmException: No such algorithm: RSA/ECB/PKCS1Padding 问题解决

本文记录了一次因缺少RSA算法而导致的应用程序错误,并详细解析了解决过程,包括配置BC JCE Provider及调整类加载策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

log (2).txt
错误日志:无法找到RSA算法,找不到类,类加载器有限制。
2016-09-28 14:52:39.654 [ERROR] com.csii.mcs.ibs.validator.CSIIPinConvertor nP1vkKiwN9YmjVBVLbWe7rROTgM2v8b9eevCpIXPZwK7YXpp2jTq!-685201044!1475045533872 ebankmapp2#1475045559550#24 login decrptPWD failed
java.security.NoSuchAlgorithmException: No such algorithm: RSA/ECB/PKCS1Padding
at javax.crypto.Cipher.getInstance(DashoA13*..) [na:1.6]
at com.csii.pdm.jceproxy.JCEProxy.getCipherInstance(JCEProxy.java:85) [com.csii.pdm.jceproxy_20121011.jar:na]
at com.csii.pe.security.EnDecryptFactory$EnDecryptImpl.deCryptRaw(EnDecryptFactory.java:405) [null:na]
at com.csii.pe.security.EnDecryptFactory$EnDecryptImpl.deCrypt(EnDecryptFactory.java:386) [null:na]
at com.csii.mcs.ibs.validator.CSIIPinConvertor.decryptPWD(CSIIPinConvertor.java:199) [null:na]
at com.csii.mcs.ibs.validator.CSIIPinConvertor.convert(CSIIPinConvertor.java:137) [null:na]
at com.csii.mcs.ibs.validator.PinValidator.validate(PinValidator.java:21) [null:na]
at com.csii.pe.validation.GreedyValidationCommand.styleValidateInternal(GreedyValidationCommand.java:411) [null:na]
at com.csii.pe.validation.GreedyValidationCommand.styleValidate(GreedyValidationCommand.java:320) [null:na]
at com.csii.pe.validation.GreedyValidationCommand.doValidation(GreedyValidationCommand.java:179) [null:na]
at com.csii.pe.validation.GreedyValidationCommand.channelExecute(GreedyValidationCommand.java:92) [null:na]
at com.csii.pe.chain.command.AbstractChannelCommand.execute(AbstractChannelCommand.java:33) [null:na]
at com.csii.pe.chain.ChainImpl.execute(ChainImpl.java:114) [null:na]
at com.csii.pe.core.ServiceBasedCoreController.execute(ServiceBasedCoreController.java:229) [null:na]
at com.csii.pe.channel.http.servlet.MainController.process(MainController.java:127) [null:na]
at com.csii.pe.dynamic.http.MainServlet.process(MainServlet.java:381) [null:na]
at com.csii.pe.dynamic.http.MainServlet.doPost(MainServlet.java:291) [null:na]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) [javax.servlet_1.0.0.0_2-5.jar:2.5]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) [javax.servlet_1.0.0.0_2-5.jar:2.5]
at org.apache.felix.http.base.internal.handler.ServletHandler.doHandle(ServletHandler.java:148) [null:na]
at org.apache.felix.http.base.internal.handler.ServletHandler.handle(ServletHandler.java:134) [null:na]
at org.apache.felix.http.base.internal.dispatch.ServletPipeline.handle(ServletPipeline.java:63) [null:na]
at org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:49) [null:na]
at org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33) [null:na]
at org.apache.felix.http.base.internal.dispatch.FilterPipeline.dispatch(FilterPipeline.java:48) [null:na]
at org.apache.felix.http.base.internal.dispatch.Dispatcher.dispatch(Dispatcher.java:39) [null:na]
at org.apache.felix.http.base.internal.DispatcherServlet.service(DispatcherServlet.java:55) [null:na]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) [javax.servlet_1.0.0.0_2-5.jar:2.5]
at org.apache.felix.http.proxy.ProxyServlet.service(ProxyServlet.java:60) [org.apache.felix.http.proxy-2.0.4.jar:na]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) [javax.servlet_1.0.0.0_2-5.jar:2.5]
at com.csii.pe.dynamic.launch.proxy.ProxyServlet.service(ProxyServlet.java:50) [com.csii.pe.dynamic.launch.proxy_20121011.jar:na]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) [javax.servlet_1.0.0.0_2-5.jar:2.5]
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227) [weblogic.jar:10.3.6.0]
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125) [weblogic.jar:10.3.6.0]
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:301) [weblogic.jar:10.3.6.0]
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26) [weblogic.jar:10.3.6.0]
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:60) [BUG20780171_1036012.jar:10.3.6.0]
at com.csii.pe.dynamic.launch.proxy.FixEncodingFilter.doFilter(FixEncodingFilter.java:59) [com.csii.pe.dynamic.launch.proxy_20121011.jar:na]
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:60) [BUG20780171_1036012.jar:10.3.6.0]
at com.csii.pe.dynamic.filter.bos.RemoteAddrFilter.doFilter(RemoteAddrFilter.java:51) [com.csii.pe.dynamic.launch.proxy_20121011.jar:na]
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:60) [BUG20780171_1036012.jar:10.3.6.0]
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3748) [BUG20780171_1036012.jar:10.3.6.0]
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3714) [BUG20780171_1036012.jar:10.3.6.0]
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) [com.bea.core.weblogic.security.identity_1.2.0.0.jar:1.2.0.0]
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120) [com.bea.core.weblogic.security.wls_1.0.0.0_6-2-0-0.jar:6.2.0.0]
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2283) [BUG20780171_1036012.jar:10.3.6.0]
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2182) [BUG20780171_1036012.jar:10.3.6.0]
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1491) [BUG20780171_1036012.jar:10.3.6.0]
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:263) [BUG20780171_1036012.jar:1.11.0.0]
at weblogic.work.ExecuteThread.run(ExecuteThread.java:221) [BUG20780171_1036012.jar:1.11.0.0]
Caused by: java.security.NoSuchAlgorithmException: class configured for Cipher(provider: BC)cannot be found.
at java.security.Provider$Service.getImplClass(Provider.java:1268) [na:1.6.0_45]
at java.security.Provider$Service.newInstance(Provider.java:1220) [na:1.6.0_45]
... 50 common frames omitted
Caused by: java.lang.ClassNotFoundException: org.bouncycastle.jce.provider.JCERSACipher$NoPadding
at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:297) [com.bea.core.utils.classloaders_2.0.0.0.jar:2.0.0.0]
at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:270) [com.bea.core.utils.classloaders_2.0.0.0.jar:2.0.0.0]
at weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAwareClassLoader.java:64) [com.bea.core.utils.classloaders_2.0.0.0.jar:2.0.0.0]
at java.lang.ClassLoader.loadClass(ClassLoader.java:306) [na:1.6.0_45]
at java.lang.ClassLoader.loadClass(ClassLoader.java:247) [na:1.6.0_45]
at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:179) [com.bea.core.utils.classloaders_2.0.0.0.jar:2.0.0.0]
at weblogic.utils.classloaders.ChangeAwareClassLoader.loadClass(ChangeAwareClassLoader.java:43) [com.bea.core.utils.classloaders_2.0.0.0.jar:2.0.0.0]
at java.security.Provider$Service.getImplClass(Provider.java:1262) [na:1.6.0_45]
... 51 common frames omitted
2016-09-28 14:52:39.660 [DEBUG] com.csii.pe.channel.http.servlet.MainController nP1vkKiwN9YmjVBVLbWe7rROTgM2v8b9eevCpIXPZwK7YXpp2jTq!-685201044!1475045533872 ebankmapp2#1475045559550#24 login process
com.csii.pe.validation.MultiValidationRuntimeException: null
at com.csii.pe.validation.GreedyValidationCommand.channelExecute(GreedyValidationCommand.java:130) [na:na]
at com.csii.pe.chain.command.AbstractChannelCommand.execute(AbstractChannelCommand.java:33) [na:na]
at com.csii.pe.chain.ChainImpl.execute(ChainImpl.java:114) [na:na]
at com.csii.pe.core.ServiceBasedCoreController.execute(ServiceBasedCoreController.java:229) [null:na]
at com.csii.pe.channel.http.servlet.MainController.process(MainController.java:127) [null:na]
at com.csii.pe.dynamic.http.MainServlet.process(MainServlet.java:381) [null:na]
at com.csii.pe.dynamic.http.MainServlet.doPost(MainServlet.java:291) [null:na]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) [javax.servlet_1.0.0.0_2-5.jar:2.5]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) [javax.servlet_1.0.0.0_2-5.jar:2.5]
at org.apache.felix.http.base.internal.handler.ServletHandler.doHandle(ServletHandler.java:148) [null:na]
at org.apache.felix.http.base.internal.handler.ServletHandler.handle(ServletHandler.java:134) [null:na]
at org.apache.felix.http.base.internal.dispatch.ServletPipeline.handle(ServletPipeline.java:63) [null:na]
at org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:49) [null:na]
at org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33) [null:na]
at org.apache.felix.http.base.internal.dispatch.FilterPipeline.dispatch(FilterPipeline.java:48) [null:na]
at org.apache.felix.http.base.internal.dispatch.Dispatcher.dispatch(Dispatcher.java:39) [null:na]
at org.apache.felix.http.base.internal.DispatcherServlet.service(DispatcherServlet.java:55) [null:na]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) [javax.servlet_1.0.0.0_2-5.jar:2.5]
at org.apache.felix.http.proxy.ProxyServlet.service(ProxyServlet.java:60) [org.apache.felix.http.proxy-2.0.4.jar:na]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) [javax.servlet_1.0.0.0_2-5.jar:2.5]
at com.csii.pe.dynamic.launch.proxy.ProxyServlet.service(ProxyServlet.java:50) [com.csii.pe.dynamic.launch.proxy_20121011.jar:na]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) [javax.servlet_1.0.0.0_2-5.jar:2.5]
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227) [weblogic.jar:10.3.6.0]
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125) [weblogic.jar:10.3.6.0]
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:301) [weblogic.jar:10.3.6.0]
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26) [weblogic.jar:10.3.6.0]
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:60) [BUG20780171_1036012.jar:10.3.6.0]
 at com.csii.pe.dynamic.launch.proxy.FixEncodingFilter.doFilter(FixEncodingFilter.java:59) [com.csii.pe.dynamic.launch.proxy_20121011.jar:na]
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:60) [BUG20780171_1036012.jar:10.3.6.0]
at com.csii.pe.dynamic.filter.bos.RemoteAddrFilter.doFilter(RemoteAddrFilter.java:51) [com.csii.pe.dynamic.launch.proxy_20121011.jar:na]
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:60) [BUG20780171_1036012.jar:10.3.6.0]
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3748) [BUG20780171_1036012.jar:10.3.6.0]
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3714) [BUG20780171_1036012.jar:10.3.6.0]
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) [com.bea.core.weblogic.security.identity_1.2.0.0.jar:1.2.0.0]
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120) [com.bea.core.weblogic.security.wls_1.0.0.0_6-2-0-0.jar:6.2.0.0]
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2283) [BUG20780171_1036012.jar:10.3.6.0]
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2182) [BUG20780171_1036012.jar:10.3.6.0]
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1491) [BUG20780171_1036012.jar:10.3.6.0]
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:263) [BUG20780171_1036012.jar:1.11.0.0]
at weblogic.work.ExecuteThread.run(ExecuteThread.java:221) [BUG20780171_1036012.jar:1.11.0.0]
2016-09-28 14:52:39.677 [DEBUG] com.csii.pe.channel.http.servlet.UrlView /WEB-INF/zh_CN/defaultPublicError.jsp
2016-09-28 14:52:40.463 [DEBUG] com.csii.pe.channel.http.servlet.StreamView {Content=[B@5abffb34, _vTokenName=G49C} [B@5abffb34
2016-09-28 14:55:16.912 [DEBUG] com.csii.pe.channel.http.servlet.StreamView {Content=[B@2fe464f8, _vTokenName=7LK9} [B@2fe464f8
2016-09-28 15:05:30.803 [DEBUG] com.csii.pe.channel.http.SessionListener pe.http.user_is_logout from session:nP1vkKiwN9YmjVBVLbWe7rROTgM2v8b9eevCpIXPZwK7YXpp2jTq!-685201044!1475045533872
2016-09-28 15:26:13.627 [DEBUG] com.csii.pe.channel.http.servlet.StreamView {Content=[B@2a731792, _vTokenName=JK8B} [B@2a731792
首先思考为什么找不到RSA的算法,因为找不到调用的类,找不到该类,那么该类的jar包有没有引入,如果引入了,类加载器为什么加载不到? (OSGI的类加载器以后有时间要深入研究一下)
检查jdk中是否加载类,同时检查jdk的版本。发现与jdk关系不大,因为PWEB与EWEB部署在同一个服务器上,使用的jdk也都是同一个。所以有可能是基础War包里面没有引入。 应该是找不到 BC JCE providor。BC JCE没有注册成功。
看: /opt/weblogic/user_projects/domains/ebankapp1_domain/servers/eweb1/logs
cannot find BC JCE Providor
add BC JCE Providor
weblogic.management.NoAccessRuntimeException: Access not allowed for subject: principals=[], on ResourceType: ch.qos.logback.classic.jmx.JMXConfigurator Action: unregister, Target: null
    at weblogic.management.internal.SecurityHelper$IsAccessAllowedPrivilegeAction.wlsRun(SecurityHelper.java:819)
    at weblogic.management.internal.SecurityHelper$IsAccessAllowedPrivilegeAction.run(SecurityHelper.java:682)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
    at weblogic.management.internal.SecurityHelper.isAccessAllowed(SecurityHelper.java:269)
    at weblogic.management.internal.SecurityHelper.isAccessAllowed(SecurityHelper.java:157)
    at weblogic.management.mbeanservers.internal.SecurityInterceptor.checkUnregisterSecurity(SecurityInterceptor.java:672)
    at weblogic.management.mbeanservers.internal.SecurityInterceptor.unregisterMBean(SecurityInterceptor.java:321)
    at weblogic.management.jmx.mbeanserver.WLSMBeanServer.unregisterMBean(WLSMBeanServer.java:210)
    at ch.qos.logback.classic.jmx.JMXConfigurator.onStop(JMXConfigurator.java:249)
    at ch.qos.logback.classic.LoggerContext.fireOnStop(LoggerContext.java:320)
    at ch.qos.logback.classic.LoggerContext.stop(LoggerContext.java:337)
    at com.csii.pe.dynamic.adminservice.jmx.SimpleJMXAdminServer.stop(SimpleJMXAdminServer.java:215)
    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.springframework.beans.factory.support.DisposableBeanAdapter.invokeCustomDestroyMethod(DisposableBeanAdapter.java:208)
    at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:165)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:487)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:462)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:430)
    at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:853)
    at org.springframework.osgi.context.support.AbstractOsgiBundleApplicationContext.destroyBeans(AbstractOsgiBundleApplicationContext.java:204)
    at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:831)
    at org.springframework.osgi.context.support.AbstractOsgiBundleApplicationContext.doClose(AbstractOsgiBundleApplicationContext.java:197)
    at org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.access$501(AbstractDelegatedExecutionApplicationContext.java:69)
    at org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext$2.run(AbstractDelegatedExecutionApplicationContext.java:214)
    at org.springframework.osgi.util.internal.PrivilegedUtils.executeWithCustomTCCL(PrivilegedUtils.java:85)
    at org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.normalClose(AbstractDelegatedExecutionApplicationContext.java:210)
    at org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor.close(DependencyWaiterApplicationContextExecutor.java:374)
    at org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.doClose(AbstractDelegatedExecutionApplicationContext.java:236)
    at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:794)
    at org.springframework.osgi.extender.internal.activator.ContextLoaderListener$1.run(ContextLoaderListener.java:522)
    at org.springframework.osgi.extender.internal.util.concurrent.RunnableTimedExecution$MonitoredRunnable.run(RunnableTimedExecution.java:60)
    at org.springframework.scheduling.timer.DelegatingTimerTask.run(DelegatingTimerTask.java:66)
    at java.util.TimerThread.mainLoop(Timer.java:512)
    at java.util.TimerThread.run(Timer.java:462)
此段启动日志显示该错误为BC无法注册JCE Providor
修改war包
eweb.war
在web.xml中添加以下代码:
<context-param>
        <param-name>InitBCProvider</param-name>
        <param-value>true</param-value>
    </context-param>
framework.properties文件中修改:
#Client Service International, Inc. Copyright all reserved.
org.osgi.framework.bootdelegation=sun.*,com.sun.*
,org.bouncycastle.*,javax.crypto

org.bouncycastle.*,javax.crypto引入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值