2011-05-16 31 views
0

我知道如何使用單向散列算法將密碼保存在數據庫中。但在我的情況下,我需要用純文本密碼登錄到服務(Dropbox API)。在代碼中存儲密碼字符串

因此,如果我想創建一個應用程序,它始終使用相同的用戶名/密碼登錄到Dropbox(例如對於客戶端),我將如何將用戶密碼保存在我的Java代碼中,因此它不容易使用HexViewer讀取?

它應該是加密和解密字符串的東西,但它不能被綁定到一臺機器上。

+0

您無法加密它 - 您將在哪裏存儲**這個**加密密鑰?你唯一的選擇是散列它,如果dropbox支持直接傳遞散列(而不是純文本密碼)。 – 2011-05-16 17:37:04

+1

@Vladislav如果Dropbox支持直接傳遞散列,那麼用戶不能像密碼一樣使用散列嗎? – Chip 2011-05-16 17:45:47

+0

嗯...我不是在想這些,對不起。如果您不向用戶詢問任何內容,則無法保證安全。您可以將密碼存儲在鑰匙串中,但您必須要求鑰匙串的密碼。我猜你可以將它存儲在某個Windows存儲中,但用戶仍然需要登錄(它提供了密鑰)。 – 2011-05-16 17:53:49

回答

4

那麼,使用DES或AES加密密碼,將密鑰保存在jar文件中並僅在需要時加密。但是如果有人需要,他會很容易地將其撤銷並提取您的登錄名和密碼。

+0

好吧,如果我想執行機器綁定的加密? Java是否提供了一些標準類來做這些事情? – 2011-05-16 18:18:51

+0

@Lukas,在這種情況下,使用PC或HDD或主板序列號的MAC地址。 http://download.oracle.com/javase/6/docs/api/java/net/NetworkInterface.html#getHardwareAddress%28%29 http://www.rgagnon.com/javadetails/java-0580.html – 2011-05-16 18:33:58

+0

THX ,我敢肯定看看這個。 – 2011-05-16 19:05:40

1

只要您在程序中以明文形式需要它,它就不能確定。無論你做什麼,你的程序都可以被分析,反編譯,在「受損」的虛擬機中運行,無論如何。