java.security.KeyStore
был , а не создан для работы с паролями. Это хранилище криптографических c ключей и сертификатов. Хотя вы можете попытаться использовать его для хранения паролей, поскольку он может, например, хранить личные ключи, я бы посоветовал вам этого не делать, поскольку API KeyStore громоздок и не предназначен для вашего случая использования. https://docs.oracle.com/javase/8/docs/api/java/security/KeyStore.html
Как хранить пароли в Windows, Linux или macOS
Вместо этого вам понадобится Связка ключей в macOS и аналогичные инструменты в других операционных системах. Поскольку вы также спрашиваете о Windows и Linux, вас может заинтересовать библиотека Java Keyring . Он хранит пароли в:
- Связка ключей в macOS
- Диспетчер учетных данных в Windows
- DBus Secret Service в GNOME
Вот как его использовать:
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'
Maven
<dependency>
<groupId>com.github.javakeyring</groupId>
<artifactId>java-keyring</artifactId>
<version>1.0.1</version>
</dependency>
Если вы хотите поддерживать окружение рабочего стола, отличное от GNOME, вам, вероятно, придется придумать собственное решение или поискать другую библиотеку, но это должно помочь вам начать работу.