WEB应用原来的部署环境是JBOSS4.0.5+JDK1.5。由于业务的需要现在将JDK升级到1.6 
由于JDK进行了升级,所以JBOSS也就使用了JBOSS4.2.3版本 升级过程中就是将WEB应用整个复制到JBOSS发布目录,然后就是一些应用JAR复制到JBOSS相应目录 
部署完后,启动JBOSS4.2.3没有出现异常,输入访问地址,可以进入WEB应用的第一个界面,【登陆】 点击登陆时,系统会将该用户在系统数据库存放的密码加密字符串进行解密,然后与用户输入的密码进行匹配。 
现在问题就出现在这个加密解密算法上了。 
在JBOSS4.2.3+JDK1.6环境中,点击登陆后抛出异常 2011-08-23 04:13:07,656 INFO  [STDOUT] AppException: sdocrypto.app.AppSHA0Imp:no such algorithm: SHA-0 for provider CreateCrypto 
2011-08-23 04:13:07,656 ERROR [org.jboss.ejb.plugins.LogInterceptor] EJBException in method: public abstract com.create.engine.usermana.ejb.Token com.create.engine.usermana.ejb.TokenHome.create(java.lang.String,int) throws javax.ejb.CreateException,java.rmi.RemoteException, causedBy: 
com.create.sec.crypto.app.AppException: sdocrypto.app.AppSHA0Imp:no such algorithm: SHA-0 for provider CreateCrypto 
at com.create.sec.crypto.app.SHA0Impl.computeValue(SHA0Impl.java:69) 若换成JBOSS4.2.3+JDK1.5 则无问题 还请大家给小弟解答下,这到底是怎么回事 
拜谢! 

解决方案 »

  1.   

    no such algorithm: SHA-0 for provider CreateCrypto  错误信息是,没有提供指定的算法,原因未知,呵呵俄!
      

  2.   

    谢谢你的帮助。我在检查原来使用的JDK1.5时,发现了这么个配置
    在jre\lib\security下的java.security文件有一句配置#
    # List of providers and their preference orders (see above):
    #
    security.provider.1=sun.security.provider.Sun
    security.provider.2=com.sun.rsajca.Provider#package.definition=
    security.provider.3=com.create.sec.crypto.provider.CreateCrypto
    com.create.sec.crypto.provider.CreateCrypto引用的是我们自己写的一个算法。
    然后我依葫芦画瓢,打开JDK1.6中相应的文件进行修改
    JDK1.6中配置是这样子的#
    # List of providers and their preference orders (see above):
    #
    security.provider.1=sun.security.provider.Sun
    security.provider.2=sun.security.rsa.SunRsaSign
    security.provider.3=com.sun.net.ssl.internal.ssl.Provider
    security.provider.4=com.sun.crypto.provider.SunJCE
    security.provider.5=sun.security.jgss.SunProvider
    security.provider.6=com.sun.security.sasl.Provider
    security.provider.7=org.jcp.xml.dsig.internal.dom.XMLDSigRI
    security.provider.8=sun.security.smartcardio.SunPCSC
    security.provider.9=sun.security.mscapi.SunMSCAPI
    于是我在后面做了这样的配置#package.definition=
    security.provider.10=com.create.sec.crypto.provider.CreateCrypto
    这样配置后,程序依然出错,错误与最开始一样。
    在网上找资料得出java.security是加密安全方面的配置文件,抛出的异常意思是找不到算法,但是我做了
    security.provider.10=com.create.sec.crypto.provider.CreateCrypto这样的配置依然不行。