簡體   English   中英

密碼保護Java控制台應用程序的最佳方法

[英]Best way to password protect a Java console application

我正在尋找一種最佳實踐或標准方法來密碼保護控制台應用程序。 我已經研究了各種方法,並希望對我的方法有一些反饋。

我決定使用Argon2散列我的密碼,這樣我只需要存儲單向散列。 一切都按預期工作。 我的問題是我在哪里存儲哈希? 它應該硬編碼嗎? 我應該將它存儲在一個單獨的文件中並將其讀入嗎? 什么是最安全的方法來解決這個問題? 在一天結束時,我正在編寫這個應用程序來學習,並且非常希望學會以正確的方式去做。 還將贊賞與任何相關閱讀材料的鏈接。 我繼續google ...

編輯:那么如果我將程序密碼存儲為文件中的哈希,那么潛在的缺點是什么呢? 用戶必須知道使用該應用程序的密碼。 然后讓受哈希保護的程序密碼成為加密密鑰以保護敏感信息? 即使操作源代碼和/或散列文件,敏感數據也不會被讀取,因為正確的密碼被用作密鑰......我錯過了什么?

首先,Argon2是用於將密碼轉換為加密密鑰的精細密鑰派生函數。

但是,如果您使用Argon2哈希作為加密密鑰,那么顯然不要將其存儲在磁盤上。 如果將加密密鑰存儲在加密數據旁邊,則根本不加密。 人們甚至可以說它更糟糕,因為它給人一種虛假的安全感。

沒有密鑰,正確加密的數據是無用的,因此您不必保護應用程序本身。 只要在需要加密或解密某些內容時詢問密碼。 您可以考慮將哈希值保留在內存中一段時間​​,這樣您就不必反復詢問它,但不要堅持它。

例如,這正是GPG的工作方式。 它不會在任何地方存儲任何密碼哈希值。 相反,它存儲加密的私鑰,如果需要解密私鑰,只需要密碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM