0

我正在将一个用 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

4

2 回答 2

1

实际上,sun.security.util.DerEncoder它是一个界面,您可以轻松创建自己的版本。困难的任务是定位和处理实现这个接口的类。

值得一提的是,DerEncoder 接口定义了一个方法:

  public void  derEncode(OutputStream out)
        throws IOException;

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

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

更新

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

  • 一种可能性是“Oracle Security Developer Tools Security Engine”(又名“Oracle Fusion Middleware Security Engine”)。这似乎是 Oracle 10g 和 11g 产品套件的一部分,但也可能单独提供。链接:http ://docs.oracle.com/cd/E23549_01/apirefs.1111/e10674/toc.htm

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

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


请注意,Java 6 已停产,因此您确实应该移植到 Java 7。

于 2013-07-25T11:57:44.993 回答
0

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

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

于 2013-07-25T12:11:12.187 回答