2011-12-26 101 views
4

我想使用包sun.misc.BASE64Encoder的Base64編碼器,因爲我需要編碼密碼。但是,當我輸入此包的導入時會生成錯誤。是java中仍然可用的sun.misc包嗎?

其中用於所述編碼器的代碼將被使用的消息是下列:

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

是否有在Java的等效類做同樣的事情?或者,也許,有人知道如何能夠獲得原始類的代碼,可能嗎?

謝謝:)

+0

簡短的回答:「是的,但沒有使用這些」 – fge 2011-12-26 22:30:24

回答

3

this question但恕我直言接受的答案是錯的。你永遠不想使用像sun開頭的任何非記錄類。原因是現在你的代碼依賴於特定的JVM實現(例如IBM JVM可能沒有這個實現)。

第二個答案(與票數最多)是你想要的。

2

警告和錯誤之間存在很大差異,所以您需要仔細閱讀該消息以瞭解它的含義。

sun.misc中的類可以更改,但不會出現在所有JVM上。您正在使用具有BASE64編碼的庫取而代之。

恕我直言,你可以使用sun.misc是你瞭解使用類的所有風險。然而,在你的情況下,最好避免使用sun.com.sun.com.sun.

6

下的任何類。在Java中沒有一個「公開可用」(可以這麼說)的類。考慮使用包含base64實現的Apache Commons Codec包。主頁位於:http://commons.apache.org/codec/

您直接使用sun.*com.sun.*軟件包需要您自擔風險。不保證向後兼容性。

+2

若有人還在讀書,現在,Java的8最後包括一個公共的Base64編碼器/解碼器,所以它的沒有必要爲此使用Apache Commons。 – ivantod 2015-07-14 12:00:14

相關問題