sun.misc包仍然可用于java?

ict*_*991 6 java hash base64 encoder

我想使用sun.misc.BASE64Encoder包的Base64编码器,因为我需要编码密码.但是,当我输入此包的导入时,会生成错误.

要使用编码器代码的消息如下:

private synchronized static String hash(final String username, final String password) {
        DIGEST.reset();
        return new BASE64Encoder().encode(DIGEST.digest((username.toLowerCase() + password).getBytes()));
    }
Run Code Online (Sandbox Code Playgroud)

在java中是否有一个同等的类做同样的事情?或许,有人知道如何能够获得原始类的代码吗?

谢谢 :)

iva*_*tod 6

Java中没有"公开可用"(可以这么说)的课程.考虑使用包含base64实现的Apache Commons Codec包.主页在这里:http://commons.apache.org/codec/.

您直接使用sun.*com.sun.*打包需要您自担风险.这些不保证向后兼容性.

  • 如果有人现在还在阅读,Java 8最终会包含一个公共Base64编码器/解码器,所以没有必要再使用Apache Commons了. (2认同)

Dej*_*kic 6

我建议您不要sun.misc.BASE64Encoder使用,而使用Apache Commons Base64类。这是链接:http : //commons.apache.org/codec/apidocs/org/apache/commons/codec/binary/Base64.html


更新(6/7/2017)

使用sun.misc.BASE64EncoderJava 9将导致编译错误,并且在Java 8中已经发出警告。

正确使用的类Base64java.util包装中。

例:

import java.util.Base64;

Base64.getDecoder().decode(...);
Run Code Online (Sandbox Code Playgroud)