gpt4 book ai didi

Java - KeyPairGenerator.Initialize(int,SecureRandom)NullPointerException

转载 作者:行者123 更新时间:2023-12-02 07:39:36 26 4
gpt4 key购买 nike

我正在用 Java 创建一个加密安全的 IM 应用程序。第一步(建立连接后)是交换公钥(RSA-4096),以便对方可以创建对称 key (AES-256),用对方的公钥对其进行加密,通过连接发送,其中原始方可以使用其私钥解密对称 key ,然后双方可以交换使用 256 位 key 加密的消息。

我的问题出现在初始化KeyPairGenerator时,每次我调用kpg.initialize(4096,sr),其中kpgKeyPairGenerator 的变量名称,sr 是我创建的 SecureRandom,程序崩溃并返回 NullPointerException,以下是完整代码:

CryptoBox.java:

    package crypto;

import java.security.*;

public class CryptoBox {
private static SecureRandom sr = new SecureRandom();
private static KeyPairGenerator kpg;
private static KeyPair kp;

private static Key PubKey;
private static Key PrivKey;

@SuppressWarnings("static-access")
public void init(int keySize){
try {
sr.getInstance("SHA1PRNG");
kpg.getInstance("RSA");
} catch (NoSuchAlgorithmException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
kpg.initialize(keySize,sr); // <-- NullPointerException
}catch(Exception e){
e.printStackTrace();
return;
}

kp = kpg.genKeyPair();
PubKey = kp.getPublic();
PrivKey = kp.getPrivate();
}

}

Main.java:

package main;

import crypto.CryptoBox;

public class Main {

/**
* @param args
*/
public static void main(String[] args){
// TODO Auto-generated method stub
CryptoBox cb = new CryptoBox();
cb.init(4096); // <-- NullPointerException
}

}

完整的错误消息是:

java.lang.NullPointerException
at crypto.CryptoBox.init(CryptoBox.java:23)
at main.Main.main(Main.java:15)

最佳答案

sr.getInstance("SHA1PRNG"); 更改为 sr = KeyPairGenerator.getInstance("SHA1PRNG");

copmiler 可能已经告诉你你的错误,但你选择忽略它。帮自己一个忙,也删除 @SuppressWarnings("static-access"),这就是编译器错误的好处;D

关于Java - KeyPairGenerator.Initialize(int,SecureRandom)NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11768659/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com