Я не очень осведомлен о Java KeyStore. Я хочу иметь зашифрованную структуру для хранения моих ключей.
У меня несколько кластеров, и существует ключ, связанный с каждым кластером, и теперь я хочу надежно хранить эти ключи, чтобы они все были зашифрованы с использованием одного главного ключа (например, loginid)
Я много бродил в поисках этой проблемы и где-то на самом стеке overflow кто-то предложил около Java keyStore для хранения SecretKey (Symmetri c Encryption). Я прочитал его документацию и нашел ее идеальной в соответствии с моими требованиями, но не смог правильно понять ее реализацию.
Вот фрагмент кода, над которым я работаю -
public class Prac {
public static void main(String[] args) throws KeyStoreException, FileNotFoundException, IOException, NoSuchAlgorithmException, CertificateException, UnrecoverableKeyException, UnrecoverableEntryException {
KeyStore ks = KeyStore.getInstance("JCEKS");
char[] ksPwd = "yashkaranje98".toCharArray();
ks.load(null, ksPwd);
KeyStore.ProtectionParameter protParam = new KeyStore.PasswordProtection(ksPwd);
javax.crypto.SecretKey mySecretKey = new SecretKeySpec("_anky!@ubn#$0e41".getBytes(),"AES");
KeyStore.SecretKeyEntry skEntry = new KeyStore.SecretKeyEntry(mySecretKey);
ks.setEntry("cluster1", skEntry, protParam);
java.io.FileOutputStream fos = null;
try {
fos = new java.io.FileOutputStream("keystore.ks");
ks.store(fos, ksPwd);
} finally {
if (fos != null) {
fos.close();
}
}
java.io.FileInputStream fis = null;
try {
ks.load(new FileInputStream("keystore.ks"), ksPwd);
} finally {
if (fis != null) {
fis.close();
}
}
SecretKey key = (SecretKey)ks.getKey("cluster1", ksPwd);
String encodedKey = Base64.getEncoder().encodeToString(key.getEncoded());
System.out.println(encodedKey);
}
}
Псевдоним: "cluster1"
Ключ для хранения: _anky! @ Ubn # $ 0e41
Параметр защиты: yashkaranje98
Печатается: X2Fua3khQHVibiMkMGU0MQ ==
То, что я ожидаю, это главное: _anky! @ Ubn # $ 0e41
Пожалуйста, дайте мне знать, что мне не хватает ... но прежде, пожалуйста, скажите мне, что я Я ожидаю, что это даже le git? или это имеет смысл?
(я все еще изучаю эту концепцию KeyStore, поэтому могут быть некоторые глупые ошибки.)