私はjavaのための安全なチャットプログラムを作りたいと思う。 メッセージを入力しましたが、InvalidKeyExceptionなどのエラーが発生しました。 解決してください。ありがとうございました!JavaのRSA暗号化チャット
エラーメッセージです!
=== RSA暗号化=== java.security.InvalidKeyException:(ヌル) javax.crypto.Cipher.chooseProvider(Cipher.java:893)で のjavaxで:いいえインストールされているプロバイダはこのキーをサポートしています。 crypto.Cipher.init(Cipher.java:1249)at にあるjavax.crypto.Cipher.init(Cipher.java:1186) にあるCrypto.RSACryption.encryptMessage(RSACryption.java:28)Chat.Client.sendEncryptMessageで javax.swing.JTextField.postActionEvent(不明なソース)で javax.swing.JTextField.fireActionPerformed(不明なソース)で Chat.ClientGUI.actionPerformed(ClientGUI.java:191)でClient.java:236) (未知のソース) ( ) にあるjavax.swing.JComponent.processKeyBinding(不明なソース)、javax.swing.JComponent.processKeyBindings (未知のソース) にある のjava.awt.Container.processEvent(不明なソース)で、 の のjava.awt.Container.processEvent(不明なソース)で、java.awt.Component.processEventで java.awt.KeyboardFocusManager.redispatchEvent(不明なソース)で java.awt.Component.dispatchEvent(不明なソース)で java.awt.Container.dispatchEventImpl(不明なソース)でdispatchEventImpl(不明なソース) java.awt.DefaultKeyboardFocusManager.dispatchEventで java.awt.DefaultKeyboardFocusManager.typeAheadAssertionsでjava.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(不明 出典)(不明 出典)(不明で0 java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(不明なソース) ソース) のjava.awt.Container.dispatchEventImpl(不明なソース) のjava.awt.Window.dispatchEventImpl(不明なソース) のjava.awt.Component.dispatchEvent (Unknown Source)at java.awt.EventQueue.dispatchEventImpl(不明なソース) でjava.awt.EventQueue.access $ 500(不明なソース) でjava.awt.EventQueue $ 3.r で すべてjava.security.ProtectionDomain $ JavaSecurityAccessImpl.doIntersectionPrivilege(不明 出典)で java.security.AccessController.doPrivileged(ネイティブメソッド)で java.awt.EventQueue $ 3.run(不明なソース)で、国連(不明なソース) java.security.ProtectionDomain $ JavaSecurityAccessImpl.doIntersectionPrivilege(不明な ソース)java.awt.EventQueue $ 4.run(不明なソース) でjava.awt.EventQueue $ 4.run(不明なソース) java.security.AccessController.doPrivileged (未知のソース)at java.security.ProtectionDomain $ JavaSecurityAccessImpl.doIntersectionPrivilege chThread.pumpOneEventForFilters(不明なソース)は、Javaでjava.awt.EventDispatchThread.pumpEventsでjava.awt.EventDispatchThread.pumpEventsForHierarchyでjava.awt.EventDispatchThread.pumpEventsForFilter(不明なソース) で (不明 出典)(不明なソース) 。 awt.EventDispatchThread.pumpEvents(不明なソース)( )java.awt.EventDispatchThread。(不明なソース)
そして、ここにはencryptMessageメソッドのソースコードがあります。
public byte[] encryptMessage(String plainText, PublicKey publicKey) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException {
System.out.print("\n Plaintext : " + plainText + "\n");
byte[] t0 = plainText.getBytes();
for (byte b : t0) System.out.printf("%02X ", b);
System.out.println("\n Plaintext Length : " + t0.length + " byte");
System.out.println("\n=== RSA Encryption ===");
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] b0 = cipher.doFinal(t0);
System.out.print("\n\n Ciphertext : ");
for (byte b : b0) System.out.printf("%02X ", b);
System.out.println("\n Ciphertext Length : " + b0.length + " byte");
return b0;
}
コードをデバッグする方法を学ぶ必要があります。エラーは 'publicKey'がヌルであることを明確に述べていますか? –