0 0

java在aix中无法使用私钥加密0

使用JCE的东西进行rsa加密,在windows和linux均没问题。但是在aix中使用ibm的jdk的时候不允许用私钥进行加密(部署在weblogic上)。
请问大神应当怎么解决?

这是weblogic日志的错误信息。
java.security.InvalidKeyException: Private key cannot be used to encrypt.
        at com.ibm.crypto.provider.RSA.engineInit(Unknown Source)
        at javax.crypto.Cipher.a(Unknown Source)
        at javax.crypto.Cipher.a(Unknown Source)
        at javax.crypto.Cipher.init(Unknown Source)
        at javax.crypto.Cipher.init(Unknown Source)
        at com.computech.bankcore.common.rsa.RsaMessage.encrypt(RsaMessage.java:120)
        at com.computech.bankcore.common.rsa.RsaMessage.encodeTag(RsaMessage.java:375)
        at com.computech.bankcore.common.rsa.RsaMessage.setMac(RsaMessage.java:956)
        at com.computech.bankcore.common.webservice.TradingInterface.sendPackage(TradingInterface.java:753)
        at com.computech.bankcore.common.dorado.viewmodel.ParamQueryViewViewModel.getParam(ParamQueryViewViewModel.java:125)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:615)
        at com.bstek.dorado.view.ViewModelSupport.handleUpdate(ViewModelSupport.java:938)
        at com.bstek.dorado.view.rpc.UpdateDataRPCHandler.internalExecute(UpdateDataRPCHandler.java:115)
        at com.bstek.dorado.view.rpc.AbstractRPCHandler.execute(AbstractRPCHandler.java:118)
        at com.bstek.dorado.view.smartweb.v2.ViewServiceController.doRPC(ViewServiceController.java:450)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:615)
        at com.bstek.dorado.action.Controller.doDispatch(Controller.java:225)
        at com.bstek.dorado.action.Controller.internalDispatch(Controller.java:176)
        at com.bstek.dorado.action.Controller.internalDispatch(Controller.java:146)
        at com.bstek.dorado.action.Controller.invokeAction(Controller.java:119)
        at com.bstek.dorado.action.ActionHandler.invokeAction(ActionHandler.java:137)
        at com.bstek.dorado.action.ActionHandler.invokeAction(ActionHandler.java:127)
        at com.bstek.dorado.core.DoradoServlet.doGet(DoradoServlet.java:79)
        at com.bstek.dorado.core.DoradoServlet.doPost(DoradoServlet.java:101)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
        at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
        at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
        at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:283)
        at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
        at com.computech.common.filter.TimeZoneFilter.doFilter(TimeZoneFilter.java:39)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
        at com.bstek.dorado.core.FilterHandle.internalDoFilter(FilterHandle.java:345)
        at com.bstek.dorado.core.FilterHandle.doRPCFilter(FilterHandle.java:238)
        at com.bstek.dorado.core.FilterHandle.doFilter(FilterHandle.java:154)
        at com.bstek.dorado.core.DoradoFilter.doFilter(DoradoFilter.java:69)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
        at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
        at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
        at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
        at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
        at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
        at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3229)
        at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
        at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
        at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2002)
        at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:1908)
        at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1362)
        at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
        at weblogic.work.ExecuteThread.run(ExecuteThread.java:181)

这是使用的加密方法。
	public byte[] encrypt(byte[] message, Key key) throws Exception {
		Cipher cipher = Cipher.getInstance("RSA");
		cipher.init(Cipher.ENCRYPT_MODE, key);
		return cipher.doFinal(message);
	}
2013年1月08日 18:18

2个答案 按时间排序 按投票排序

0 0

补充下jar报名字:xmlsec
mvn工程引入

<dependency>
			<groupId>xml-security</groupId>
			<artifactId>xmlsec</artifactId>
			<version>1.3.0</version>
			<type>jar</type>
		</dependency>
		<dependency>
			<groupId>xalan</groupId>
			<artifactId>xalan</artifactId>
			<version>2.7.1</version>
			<type>jar</type>
		</dependency>

貌似需要这两个包,记不清楚,时间长了!

2013年1月09日 02:23
0 0

可能是JDK问题导致的,你可以尝试使用 apache 的jar包去做加密!

2013年1月09日 02:20

相关推荐

Global site tag (gtag.js) - Google Analytics