gpt4 book ai didi

java - 如何在 Java KeyStore 中存储一个简单的 key 字符串?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:06:27 25 4
gpt4 key购买 nike

我的 FS 上有一个文件(S3 AWS key ),其中包含一个字符串,该字符串是我用于加密过程的 key 。

我想将其移动到 Java KeyStore。

我知道如何使用 keytool 将证书导入 KeyStore,但我找不到导入简单字符串 key 的方法。

你能帮忙吗?

最佳答案

您可以使用 PBE 和 JCEKS 执行此操作。我不认为你可以用 JKS 做到这一点。解决方案:

创建一个 keystore 来存储和获取条目:

keytool -keystore clientkeystore -genkey -alias client -storetype jceks

现在一些代码来测试它。

   public static String getPasswordFromKeystore(String entry, String keystoreLocation, String keyStorePassword) throws Exception{

KeyStore ks = KeyStore.getInstance("JCEKS");
ks.load(null, keyStorePassword.toCharArray());
KeyStore.PasswordProtection keyStorePP = new KeyStore.PasswordProtection(keyStorePassword.toCharArray());

FileInputStream fIn = new FileInputStream(keystoreLocation);

ks.load(fIn, keyStorePassword.toCharArray());

SecretKeyFactory factory = SecretKeyFactory.getInstance("PBE");

KeyStore.SecretKeyEntry ske =
(KeyStore.SecretKeyEntry)ks.getEntry(entry, keyStorePP);

PBEKeySpec keySpec = (PBEKeySpec)factory.getKeySpec(
ske.getSecretKey(),
PBEKeySpec.class);

char[] password = keySpec.getPassword();

return new String(password);

}

public static void makeNewKeystoreEntry(String entry, String entryPassword, String keyStoreLocation, String keyStorePassword)
throws Exception {
SecretKeyFactory factory = SecretKeyFactory.getInstance("PBE");
SecretKey generatedSecret =
factory.generateSecret(new PBEKeySpec(
entryPassword.toCharArray()));

KeyStore ks = KeyStore.getInstance("JCEKS");
ks.load(null, keyStorePassword.toCharArray());
KeyStore.PasswordProtection keyStorePP = new KeyStore.PasswordProtection(keyStorePassword.toCharArray());

ks.setEntry(entry, new KeyStore.SecretKeyEntry(
generatedSecret), keyStorePP);

FileOutputStream fos = new java.io.FileOutputStream(keyStoreLocation);
ks.store(fos, keyStorePassword.toCharArray());
}

关于java - 如何在 Java KeyStore 中存储一个简单的 key 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6243446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com