本文介紹了在Java代碼中嵌入密碼的最安全方法是什么?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我必須在提出這個問題之前指出,我知道在客戶端應用程序中硬編碼密碼是一種糟糕的做法,原因有很多。與這個問題有關的還有其他問題。此問題的范圍較窄,并假設由于某些您無法控制的原因,身份驗證憑據必須駐留在客戶端應用程序的代碼上。
如果某些方法比其他方法更好(例如:JPasswordfield將密碼存儲在字符數組中而不是字符串中),并且如果您必須在Java應用程序中對其進行硬編碼,您可以采取哪些措施來使其更難被獲???
更新:
該應用程序的一個實例在遠程PC上運行,其中最終用戶具有管理員權限。憑據用于訪問同一網絡中的數據庫,因此實際密碼已經預先確定,必須在實際代碼中手動輸入。
推薦答案
…如果您必須在Java應用程序中對其進行硬編碼,您可以采取哪些措施來使其更難被獲???
首先,我要確保負責做出這一糟糕決策的管理人員充分意識到這是從根本上且無可救藥地不安全1。
然后我可能會想出一些naff算法,以一種模糊的方式組合密碼;例如,通過構建兩個字節數組并將它們進行異或運算…以及分發混淆的字節碼。您所能做的最好的事情就是讓技能有限的人很難從您的代碼中反向工程密碼。
(使用強算法加密密碼不會有多大幫助,因為算法的選擇和解密密鑰都必須嵌入到代碼中。事實上,通過使用調試器在密碼需要明文的位置設置斷點,您所夢想的任何方案都可能失敗。)
1.即使是喬恩·斯基特也不能保證它的安全。
如果某些方法比其他方法更好(例如:JPasswordfield將密碼存儲在字符數組中而不是字符串中)…
我只想指出,使用字符數組在JPasswordfield等中保存密碼的正常理由是為了防止壞人從核心轉儲或交換文件中讀取密碼。它在這種情況下不會有真正的幫助,因為我們必須假設您應該擔心的壞人是擁有系統管理員訪問權限的Simeone。他或她將有足夠的控制權將調試器附加到JVM并從char數組捕獲字節。
這篇關于在Java代碼中嵌入密碼的最安全方法是什么?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,