升级到jdk 1.4到jdk1.6时sun.security.util问题

时间:2013-07-25 11:19:59

标签: java

我正在将用jdk1.4编写的web应用程序移植到1.6。编译时我收到与sun.security包弃用相关的警告。虽然我可以使用警告进行编译,但我更喜欢在没有警告的情况下进行编译。此外,在使用jdk 1.7版本时,这可能会成为错误。

警告就像

warning: sun.security.util.DerEncoder is Sun proprietary API and may be removed in a future release

我准备通过删除sun包并使用一些第三方免费包来更改源代码。为了解决其他一些问题,我使用org.apache.commons.codec重写了代码的其他部分(使用类sun.misc.BASE64Decoder)。但是我找不到sun.security.util的任何替换。

我的服务器是apache tomcat,因此使用其他服务器库如*ibm*是不可行的。

修改

我正在使用的课程包括(不限于)sun.security.util.DerEncoder, sun.security.util.DerInputStream ,sun.security.util.DerValue,sun.security.util.ObjectIdentifier ,sun.security.x509.X500Name etc

2 个答案:

答案 0 :(得分:1)

事实上,sun.security.util.DerEncoder是一个界面,您可以轻松创建自己的版本。困难的任务是找到并处理实现此接口的类。

对于它的价值,DerEncoder接口定义了一个方法:

  public void  derEncode(OutputStream out)
        throws IOException;

该方法应该将this的DER编码输出到提供的流。

DER是ANS.1数据的编码方案。 AFAIK,这个接口是Sun实现X.509证书的内部,依此类推。我怀疑解决这个问题不仅仅是找到一个替代课程。相反,我认为您需要了解您的代码(显然)使用此接口的原因,然后找出“正确”的方式来执行它需要做的事情。 (“正确”......与使用公共API一样。)

<强>更新

基于您正在使用的其他类,我认为您需要一个用于Java实现的X500:

  • 一种可能性是“Oracle安全开发人员工具安全引擎”(又名“Oracle融合中间件安全引擎”)。这似乎是Oracle 10g和11g产品套件的一部分,但它也可以单独提供。链接:http://docs.oracle.com/cd/E23549_01/apirefs.1111/e10674/toc.htm

    据我所知,你不能免费获得这些东西。您只能将其嵌入到各种付费的Oracle产品中。

  • 另一种可能性是BouncyCastle X509实施。


请注意,Java 6是EOL,因此您应该真正移植到Java 7。

答案 1 :(得分:0)

如果你真的需要摆脱这些类(它们仍然存在于1.7 AFAICT中),你可能不得不用密码库中的等效代码重写整个代码。试试这个:

http://www.bouncycastle.org/java.html