我的應用程序需要加密一些數據(用戶會話令牌)。我看到的大多數例子周圍有使用密碼和鹽一樣,生成密鑰的方法:我們在哪裏存儲密鑰/密碼/鹽進行加密?
public static Key generateKey(char[] passphrase, byte[] salt) {
...
}
我的理解是,我們有生成密碼三個選項:
- 讓用戶每次應用程序啓動時輸入它(煩人的用戶)。
- 將密碼硬編碼到應用程序本身中。對用戶更方便,但有人可以找出你的密碼是給你的應用程序二進制文件。
- 隨機生成一個密碼,但我們必須將生成的密鑰存儲在磁盤上。現在我們只是將問題轉移到必須將密鑰安全地存儲在磁盤上,這似乎也是不可能的。如果攻擊者發現生成的密鑰,那麼大問題。
選項#1不適用於我。選項#2和#3似乎固有地有缺陷,除非我嚴重誤解如何去做這件事(希望我是)。如果我們無法參加#1,那麼建議如何做到這一點?我們是否爲一個攻擊者加入了一堆模糊的箍環,並希望獲得最好的結果?
感謝