Java Расшифровка RSA - исключение недопустимого заполнения - PullRequest
0 голосов
/ 08 мая 2020

Пока это мой код. Каждый раз, когда я запускаю его, я получаю исключение неверного заполнения только при попытке расшифровать. Если я поменяю местами свои личные ключи и ключи publi c, он по-прежнему генерирует то же исключение при расшифровке. Это заставляет меня думать, что проблема в самом Decrypt. Есть мысли о том, что я делаю не так?

try {
            Cipher Bob_Message_Verify = Cipher.getInstance("RSA");    
            Bob_Message_Verify.init(Cipher.DECRYPT_MODE, Alice_Pair_I.getPublic());
            Bob_Verification_Message_Decrypt = (Bob_Message_Verify.doFinal(Bob_Verification_Message_Encrypt));

        }catch(NoSuchAlgorithmException e)
        {
            throw new OTPException("Not RSA");
        }
        catch(IllegalBlockSizeException e)
        {
            throw new OTPException("Wrong Block Size");
        }
        catch(NoSuchPaddingException e)
        {
            throw new OTPException("No Padding");
        }
        catch(InvalidKeyException e)
        {
            throw new OTPException("Invalid Key");
        }
        catch(BadPaddingException e)
        {
            throw new OTPException("Bad Padding");
        }

1 Ответ

0 голосов
/ 11 мая 2020

Причина, по которой вы получаете сообщение об ошибке, заключается в том, что вы пытаетесь подтвердить с помощью Cipher. Вам нужно использовать Signature экземпляр этого. Обратите внимание, что специфика генерации подписи сильно отличается от шифра . И наоборот, проверка подписи - это не то же самое, что дешифрование с помощью ключа publi c.

...