如何安全地加密設定檔中的密碼
加密設定檔中儲存的密碼對於保護敏感資料和防止未經授權的存取至關重要。
使用Java 中基於密碼的加密(PBE)
一種簡單有效的加密方法而解密密碼則是利用Java的基於密碼的加密(PBE)。 PBE 可讓您使用安全演算法(例如 PBKDF2WithHmacSHA512)從密碼中衍生出金鑰。
實現步驟
-
產生鹽:創建隨機鹽使暴力攻擊更頻繁
- 派生加密金鑰:使用SecretKeyFactory 使用PBKDF2WithHmacSHA512 演算法從密碼和鹽派生AES 金鑰。
- 加密密碼: 使用 AES/CBC/PKCS5Padding 演算法初始化 Cipher 並加密使用衍生金鑰的密碼。
- 儲存加密的密碼:將加密的密碼與鹽一起儲存在設定檔中。
- 解密密碼: 從檔案讀取時,實例化一個具有相同演算法和金鑰的 Cipher,使用 salt 解密密碼,得到原始密碼明文。
範例程式碼
1 2 3 4 5 6 7 8 9 10 11 12 13 | import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.SecretKeySpec;
SecretKeySpec key = createSecretKey(password.toCharArray(), salt, iterationCount, keyLength);
String encryptedPassword = encrypt(originalPassword, key);
String decryptedPassword = decrypt(encryptedPassword, key);
|
登入後複製
儲存加密密碼
仍有一個挑戰:在哪裡儲存用於加密的密碼。選項包括:
- 在原始檔案中混淆:將密碼儲存在原始程式碼中並對其進行混淆以使其更難檢索。
- 提供作為系統屬性: 啟動程式時將密碼作為系統屬性傳遞(例如, -DpropertyProtectionPassword=...)。
- 使用金鑰庫:利用受主密碼保護的金鑰庫。
需要注意的是,這很困難安全地儲存主密碼,但與儲存明文相比,這些方法可以增強設定檔中密碼的安全性。
以上是如何使用 Java 安全加密設定檔中的密碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!