KeyPairGeneration 在 java 中不适用于 RSA

KeyPairGeneration not working in java for RSA

我正在尝试使用 java.security 在 java 中获取用于 RSA 加密的私钥和 public 密钥。无论我在哪里 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());
    }
}

这是我的秘密 class,它实现了 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

方法 KeyPairGenerator#getInstance 定义为

public static KeyPairGenerator getInstance(String algorithm) throws NoSuchAlgorithmException

NoSuchAlgorithmException 是 checked exception。你必须处理它:

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());
}