我目前正在 Mac 上开发 Java 应用程序。我知道有来自 Apple 的 keystore ,我想在该 keystore 中安全地存储密码。
根据 Apple 开发人员的说法,我可以通过 keyStore = KeyStore.getInstance("KeychainStore", "Apple");
获取 keystore 。
现在我的问题是:如何存储密码以及如何再次取回密码?
我已经阅读了很多关于 keystore 的内容,但我不知道实现会是什么样子。
以及如何从 Windows/Linux 获取内置 keystore ?
最佳答案
java.security.KeyStore
是 不是 创建用于处理密码。它是加密 key 和证书的存储工具。虽然您可以尝试使用它来存储密码,因为它可以存储私钥,但我建议您不要这样做,因为 KeyStore 的 API 很麻烦并且不是为您的用例设计的。
https://docs.oracle.com/javase/8/docs/api/java/security/KeyStore.html
如何在 Windows、Linux 或 macOS 中存储密码
你需要的是 Keychain在 macOS 和其他操作系统中的类似工具中。由于您还询问 Windows 和 Linux,您可能对 Java Keyring 感兴趣。图书馆。它将密码存储在:
以下是如何使用它:
public static void main(String[] args) throws Exception {
Keyring keyring = Keyring.create();
String serviceName = "test-app";
String accountName = "test-account";
keyring.setPassword(serviceName, accountName, "test-password");
String password = keyring.getPassword(serviceName, accountName);
System.out.println(password);
}
Gradle
implementation 'com.github.javakeyring:java-keyring:1.0.1'
马文
<dependency>
<groupId>com.github.javakeyring</groupId>
<artifactId>java-keyring</artifactId>
<version>1.0.1</version>
</dependency>
如果您想支持 GNOME 以外的桌面环境,您可能必须提出自己的解决方案或搜索不同的库,但这应该可以帮助您入门。
关于java - 如何将程序密码存储在 OS keystore 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60985877/