zoukankan      html  css  js  c++  java
  • sunJCE or ibmJce,was服务器下使用des的注意点

    最近开发了一个应用,在tomcat下一切ok,到was上有报错。
    
    打开debug日志,没有异常??
    
    继续调查发现是我们的程序引用了一个sun很久以前的jar.这个jar需要单独打开message日志
    
    在一堆日志中找到了:
    
    java.security.NoSuchProviderException: no such provider: SunJCE
            at sun.security.jca.GetInstance.getService(GetInstance.java:82)
            at javax.crypto.b.a(Unknown Source)
            at javax.crypto.SecretKeyFactory.getInstance(Unknown Source)
            at
    com.iplanet.services.util.JCEEncryption.setPassword(JCEEncryption.java:369)
            at com.iplanet.services.util.Crypt.createInstance(Crypt.java:126)
            at com.iplanet.services.util.Crypt.initialize(Crypt.java:97)
    这个包里使用了des加密,但是sun的组件,当然是使用sunJDK里自己sunJCE 而IBM was服务器里没有这个sunJCE的provider,于是就 no such provider 因此,我们只要提供这个sunjce的provider就可以使程序正常运行而无需修改。 常规的方法,就是下载sunjce_provider.jar,修改jdk的policy,启用这个jce(这个是jdk的安全配置,不能直接引入相应的jar包) 具体IMB的文档参考:http://www.ibm.com/developerworks/websphere/library/techarticles/0306_yu/yu.html 不过这个sun的jar包里却预留了解决方案,反编译这个jar,可以看到sun写这个jar的时候提供了配置项(32个赞):
     CRYPTO_DESCRIPTOR_PROVIDER = System.getProperty("amCryptoDescriptor.provider", "SunJCE");
     KEYGEN_ALGORITHM_PROVIDER = System.getProperty("amKeyGenDescriptor.provider", "SunJCE");
       
     Cipher.getInstance(CRYPTO_DESCRIPTOR, CRYPTO_DESCRIPTOR_PROVIDER)
     this.pbeKey = SecretKeyFactory.getInstance(KEYGEN_ALGORITHM, KEYGEN_ALGORITHM_PROVIDER).generateSecret(new PBEKeySpec(paramString.toCharArray()));
    而IbmJCE与SunJCE都遵循jce1.2.1规范,这里使用是兼容的 因此只要添加应用程序的jvm参数 -DamCryptoDescriptor.provider=IBMJCE -DamKeyGenDescriptor.provider=IBMJCE,问题解决 下面是官方的说明:
    https://java.net/projects/opensso/lists/dev/archive/2008-10/message/22
    -DamCryptoDescriptor.provider=IBMJCE -DamKeyGenDescriptor.provider=IBMJCE
    ERROR: Crypt: failed to set password-based key
    java.security.NoSuchProviderException: no such provider: SunJCE


    文章来源:http://blog.xujif.com/archives/sunjce-or-ibmjce.html
  • 相关阅读:
    iOS- 移动端Socket UDP协议广播机制的实现
    iOS- 三步快速集成社交化分享工具ShareSDK
    iOS- iOS 7 的后台多任务 (Multitasking) 对比之前的异同、具体机制、变化
    iOS- Exception异常处理
    17. Subsets【medium】
    zookeeper程序员指南
    error while loading shared libraries错误解决
    82. Single Number【easy】
    53. Reverse Words in a String【easy】
    查看linux内核和版本信息
  • 原文地址:https://www.cnblogs.com/xujif/p/3842332.html
Copyright © 2011-2022 走看看