Загрузить открытый ключ RSA из файла

Я сгенерировал закрытый ключ с:

openssl genrsa [-out file] –des3

После этого я сгенерировал открытый ключ с:

openssl rsa –pubout -in private.key [-out file]

Я хочу подписать некоторые сообщения своим закрытым ключом и проверить некоторые другие сообщения своим открытым ключом, используя следующий код:

public String sign(String message) throws SignatureException{
    try {
        Signature sign = Signature.getInstance("SHA1withRSA");
        sign.initSign(privateKey);
        sign.update(message.getBytes("UTF-8"));
        return new String(Base64.encodeBase64(sign.sign()),"UTF-8");
    } catch (Exception ex) {
        throw new SignatureException(ex);
    }
}

public boolean verify(String message, String signature) throws SignatureException{
    try {
        Signature sign = Signature.getInstance("SHA1withRSA");
        sign.initVerify(publicKey);
        sign.update(message.getBytes("UTF-8"));
        return sign.verify(Base64.decodeBase64(signature.getBytes("UTF-8")));
    } catch (Exception ex) {
        throw new SignatureException(ex);
    }
}

Я нашел решение преобразовать свой закрытый ключ в формат PKCS8 и загрузить его. Он работает с таким кодом:

public PrivateKey getPrivateKey(String filename) throws Exception {

    File f = new File(filename);
    FileInputStream fis = new FileInputStream(f);
    DataInputStream dis = new DataInputStream(fis);
    byte[] keyBytes = new byte[(int) f.length()];
    dis.readFully(keyBytes);
    dis.close();
    PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(keyBytes);
    KeyFactory kf =
            KeyFactory.getInstance("RSA");
    return kf.generatePrivate(spec);
}

И, наконец, мой вопрос:How do I load my RSA Public Key from a file?

Я думаю, что, возможно, мне нужно преобразовать файл открытого ключа в формат x509 и использоватьX509EncodedKeySpec, Но как я могу это сделать?

Ответы на вопрос(4)

Ваш ответ на вопрос