繁体   English   中英

使用密钥库存储密钥

[英]Storing key using Keystore

我正在使用密钥库来保护文件中的私钥(带有该文件的密码)。我不理解此代码

// save my secret key
javax.crypto.SecretKey mySecretKey;
KeyStore.SecretKeyEntry skEntry =
    new KeyStore.SecretKeyEntry(mySecretKey);
ks.setEntry("secretKeyAlias", skEntry, 
    new KeyStore.PasswordProtection(password));

// store away the keystore
java.io.FileOutputStream fos = null;
try {
    fos = new java.io.FileOutputStream("newKeyStoreName");
    ks.store(fos, password);
} finally {
    if (fos != null) {
        fos.close();
    }
}

setEntry在做什么? 我们是否通过fileoutputstream保存私钥?如果是真的,文件的密码在哪里? 文件的扩展范围是.jks吗?

Java密钥库是加密对象的容器。 它可以包含对称密钥,私钥和证书。 setEntry()方法将另一个条目添加到密钥库中。 在您的情况下,它将由“ secretKeyAlias”标识的对称密钥(由密码保护)添加到密钥存储中。 如果要保存私钥,则应该创建一个KeyStore.PrivateKeyEntry

在内存中创建密钥库后,可以将其存储在磁盘上。 密钥库具有store()方法 ,它将密钥库写入Stream 在这种情况下, FileOutputStream MAC也已添加到密钥库中,并受密码保护。 您的密码与上面使用的密码相同,但这不是必需的。

Java密钥库的通常扩展名是.jks,但是您的代码只是将其存储在名为“ newKeyStoreName”的文件中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM