Java 创建.jks文件以在Eclipse中存储密钥库

Java 创建.jks文件以在Eclipse中存储密钥库,java,encryption,keystore,Java,Encryption,Keystore,现在我正在尝试创建一个Java程序,该程序将能够使用密钥对数据进行加密/解密。我目前的问题是: 如何在Eclipse中创建.jks文件,以便运行该文件的任何计算机都能自动创建该文件 这是我目前用来创建新密钥库的代码: java.io.FileInputStream fis = null; try { fis = new java.io.FileInputStream("keyStoreName"); // This is where

现在我正在尝试创建一个Java程序,该程序将能够使用密钥对数据进行加密/解密。我目前的问题是:

  • 如何在Eclipse中创建.jks文件,以便运行该文件的任何计算机都能自动创建该文件

    这是我目前用来创建新密钥库的代码:

    java.io.FileInputStream fis = null;
    try {
        fis = new java.io.FileInputStream("keyStoreName"); // This is where 
                                                           // the empty .jks file would go
    } finally {
        if (fis != null) {
            fis.close();
        }
    }
    keystore.load(fis, keyPassword);
    

  • Eclipse是否在项目文件夹中查找任何带有字符串名称的.jks文件?(由
    keyStorename
    表示)

    您可以使用
    KeyStore
    类轻松创建JKS密钥存储:

            File f = new File("test.jks");
            KeyStore keyStore = KeyStore.getInstance("JKS");
            keyStore.load(null, null); // you have to initialize it
    
            //keyStore.set...args // add what you want
    
            try (FileOutputStream fout = new FileOutputStream(f)) {
                keyStore.store(fout, "changeit".toCharArray());
            }
    

    对的请注意,JKS密钥存储库已被弃用,建议使用PKCS#12,它是唯一需要的密钥存储库。然而,我相信JKS密钥库将在未来很长一段时间内继续得到Oracle JCE提供商的支持。(@JamesKPolk)尽管JKS不支持SecretKey条目,只支持PrivateKey(+certs)和TrustedCert。JCEKS确实支持SecretKey,我同样希望它会继续得到支持。在Eclipse下运行的程序在其工作目录中查找任何相对路径名(不仅仅是密钥库),默认为项目目录,但可以在适用的运行/调试配置中更改。