KeyPairGeneration не работает в java для RSA - PullRequest
0 голосов
/ 07 марта 2020

Я пытаюсь получить закрытые ключи и опубликовать c ключи для шифрования RSA в java с использованием java .security. Независимо от того, где я Google, я получаю ту же ошибку, говоря NoSuchAlgorithException.


class secret {
    void secret(){
        KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
        kpg.initialize(2048);
        KeyPair kp = kpg.generateKeyPair();
        PublicKey pubkey = kp.getPublic();
        PrivateKey privkey = kp.getPrivate();
        System.out.println(privkey.getEncoded()+"---"+pubkey.getEncoded());
    }
}

Это мой секретный класс, который реализует получение ключа для RSA. Это мой главный

class project {
    public static void main(String[] args) {
        System.out.println("Hello!");
        secret sec = new secret();
    }
}

Это ошибка

javac project.java
Picked up _JAVA_OPTIONS: -Dawt.useSystemAAFontSettings=on -Dswing.aatext=true
project.java:11: error: unreported exception NoSuchAlgorithmException; must be caught or declared to be thrown
                KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
                                                                   ^
1 error

1 Ответ

0 голосов
/ 07 марта 2020

Метод KeyPairGenerator # getInstance определен как

public static KeyPairGenerator getInstance(String algorithm) throws NoSuchAlgorithmException

NoSuchAlgorithmException является проверенным исключением . Вы должны справиться с этим:

static void secret(){
    KeyPairGenerator kpg = null;
    try {
        kpg = KeyPairGenerator.getInstance("RSA");
    } catch (NoSuchAlgorithmException e) {
        throw new RuntimeException(e);
    }
    kpg.initialize(2048);
    KeyPair kp = kpg.generateKeyPair();
    PublicKey pubkey = kp.getPublic();
    PrivateKey privkey = kp.getPrivate();
    System.out.println(privkey.getEncoded()+"---"+pubkey.getEncoded());
}
...