我的Java應用程序操縱最終用於加密文件的密碼。 因爲我看到它在擺動JPasswordField
我加載它在結構操作密碼
public char[] password;
。
我想這會增加一定程度的保護以防止密碼的內存掃描。 我認爲這只是一個「隱晦」的水平,不是真正的保護。 在我看來,這是有用的,因爲它對許多微不足道的掃描儀是有效的。 事情是這樣嗎?或者我錯過了什麼?
我的Java應用程序操縱最終用於加密文件的密碼。 因爲我看到它在擺動JPasswordField
我加載它在結構操作密碼
public char[] password;
。
我想這會增加一定程度的保護以防止密碼的內存掃描。 我認爲這只是一個「隱晦」的水平,不是真正的保護。 在我看來,這是有用的,因爲它對許多微不足道的掃描儀是有效的。 事情是這樣嗎?或者我錯過了什麼?
之所以使用char[]
代替String
被一些人首選的是,char[]
可以使用後縮小窗口時出現在覈心轉儲密碼或通過failur清除暴露從綁定的緩衝區檢查讀取。
但是,它不適合用於JPasswordField
多種原因工作這麼好:
JPasswordField
通常與ActionListener
一起使用,它將接收密碼作爲ActionEvent
中的命令字符串。Document
實現可能會複製。char[]
後,人們忘記將空白JPasswordField
空白。在專業方面,你會得到一個打勾清單功能,不必解釋自己,因爲你在做最佳實踐。
你的意思是說你認爲char []比一個String更安全嗎?嗯,不。在內部,一個字符串將其文本保存在char []中。他們看起來完全一樣。
我想你可以加密內存中的密碼以防止這種事情發生。但是大概你必須在加密之前以純文本的形式閱讀它,所以它在一段時間內仍然會以純文本形式存在。我猜想,如果你期望無論你的操作花了很長時間,在內部加密密碼可能會有一些價值,以減少暴露。
正如其他人所說,char[]
提供比String
沒有真正的安全優勢。然而,char[]
不超過String
對象提供這些好處:
toString()
方法不透露其內容)
你害怕什麼? – SLaks 2011-05-16 16:29:18
JPasswordField不提供任何形式的內存掃描保護。 – 2011-05-16 16:32:23
所以使用char []相當於使用String? – AgostinoX 2011-05-16 16:40:13