从java中的文件获取私钥

时间:2013-12-06 07:24:47

标签: java cryptography private-key

我有一个带有“key”扩展名的私钥文件。我知道这是由“Admin-PKI”程序生成的。我必须把它作为私有密钥的对象在java中读取,用它来生成数字签名。我试过打开它在文本编辑器中,但没有页眉和页脚,如“开始私钥”和“结束私钥”。我怎么知道用什么算法生成私钥?我能不知道算法吗?

1 个答案:

答案 0 :(得分:0)

下面的代码加载文件key.pem,您需要bouncycastle库(http://bouncycastle.org/

import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.security.KeyPair;
import java.security.Security;

import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.bouncycastle.openssl.PEMReader;

public class LoadKey {

    public static void main(String [] args) throws Exception {
        Security.addProvider(new BouncyCastleProvider());
        KeyPair keyPair = readKeyPair(new File("key.pem"));
    }

    private static KeyPair readKeyPair(File privateKey) throws IOException {
        FileReader fileReader = new FileReader(privateKey);
        PEMReader r = new PEMReader(fileReader);
        try {
            return (KeyPair) r.readObject();
        } catch (IOException ex) {
            throw new IOException("The private key could not be decrypted", ex);
        } finally {
            r.close();
            fileReader.close();
        }
    }
}

使用

编译并运行
javac -cp bcprov-jdk16-146.jar:. LoadKey.java
java -cp bcprov-jdk16-146.jar:. -ea LoadKey