Java で暗号的に安全な IM アプリケーションを作成しています。最初のステップ (接続を確立した後) は、公開鍵 (RSA-4096) を交換して、相手が対称鍵 (AES-256) を作成し、それを相手の公開鍵で暗号化し、接続を介して送信できるようにすることです。 、元の当事者が秘密鍵を使用して対称鍵を復号化でき、その後、両方の当事者が 256 ビット鍵で暗号化されたメッセージを交換できます。
私の問題は、の初期化時に表示されます。 whereは変数の名前であり、私が作成しKeyPairGenerator
た を呼び出すたびに、プログラムがクラッシュし、NullPointerException が返されます。完全なコードは次のとおりです。kpg.initialize(4096,sr)
kpg
KeyPairGenerator
sr
SecureRandom
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)