gpt4 book ai didi

java - BadPaddingException RSA 加密/解密错误

转载 作者:行者123 更新时间:2023-12-02 08:32:41 25 4
gpt4 key购买 nike

我目前遇到 BadPaddingException 错误。我正在将加密数据从客户端发送到服务器。服务器收到数据后进行解密。
谁能帮我看一下代码并指出错误。

客户端

try{
Cipher c = Cipher.getInstance("RSA");
c.init(Cipher.ENCRYPT_MODE, servPubKey);
String myMessage = "this is a secret message";
byte[] msgByte = myMessage.getBytes();
ObjectOutputStream outVehicle3 = new ObjectOutputStream(socket.getOutputStream());
ParamClass print4 = new ParamClass (cipherText);
outVehicle3.writeObject(print4);
} catch (Throwable e) {
// TODO Auto-generated catch block
tv.append("\nUnable to perform RSA encryption!");
e.printStackTrace();
}

服务器端

ObjectInputStream inServ3 = new ObjectInputStream(socket.getInputStream());
try{
ParamClass print5 = (ParamClass) (inServ3.readObject());
Cipher dec = Cipher.getInstance("RSA");
dec.init(Cipher.DECRYPT_MODE, serverPrivateKey);
byte[] dectyptedText = dec.doFinal(print5.cipherText);
String decipherText = dectyptedText.toString();
System.out.println("\nDecrypted Message to string: " + decipherText);
}catch (Throwable e) {
e.printStackTrace();
System.out.println("Unable to perform RSA decryption!");
}

它说错误发生在以下行。

byte[] dectyptedText = dec.doFinal(print5.cipherText);

预先感谢您的帮助和指导。

最佳答案

我假设您在客户端代码中遗漏了这一行:

byte[] cipherText = c.doFinal(msgByte);

除此之外,最可能的错误是 servPubKeyserverPrivateKey 不匹配(即它们不是同一 RSA key 对的两半)。

检查它们是否匹配的快速方法是打印 servPubKey.getModulus() 和 serverPrivateKey.getModulus() 并检查它们是否相同。

关于java - BadPaddingException RSA 加密/解密错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2919197/

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