@barabash2090

Как дешифровать зашифрованный текст через KeyPairGenerator?

Добрый день! С помощью технологии KeyPairGenerator я зашифровал текст. После его нужно расшифровать с чем возникли трудности.
public class Main {
    public static void main(String[] args) throws Exception {
        String text = "Lyubotin";

        System.out.println(text);


        byte[] encrypt = new Encrypt().processingOfEcryption(text);
        System.out.println(encrypt);

        String encryptString = new String(encrypt, "UTF8");
        System.out.println(encryptString);

        String deciphered = new Decrypt().processingOfDecryption(encrypt);
        System.out.println(deciphered);

        boolean cryptoData = encryptString.equals(deciphered) ? true : false;
        System.out.println("Совпадает ли? " + cryptoData);
    }
}

public class Encrypt {
    public byte[] processingOfEcryption(String text) throws Exception{
        Signature sign = Signature.getInstance("SHA256withRSA");
        KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");
        keyPairGen.initialize(2048);
        KeyPair pair = keyPairGen.generateKeyPair();
        Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
        cipher.init(Cipher.ENCRYPT_MODE, pair.getPublic());
        byte[] input = text.getBytes();
        cipher.update(input);

        byte[] cipherText = cipher.doFinal();

        return cipherText;
    }
}

public class Decrypt {
    public String processingOfDecryption(byte[] text) throws Exception {
        Signature sign = Signature.getInstance("SHA256withRSA");
        KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");
        keyPairGen.initialize(2048);
        KeyPair pair = keyPairGen.generateKeyPair();
        Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
        cipher.init(Cipher.DECRYPT_MODE, pair.getPrivate());
        byte[] decipheredText = cipher.doFinal(text);

        return new String(decipheredText, "UTF8");
    }
}


Ошибка возникает в функции processingOfDecryption в классе Decrypt, в строке byte[] decipheredText = cipher.doFinal(text);

Exception in thread "main" javax.crypto.BadPaddingException: Decryption error
  • Вопрос задан
  • 107 просмотров
Решения вопроса 1
xez
@xez Куратор тега Java
TL Junior Roo
Проблема в том, что вы, для того чтобы зашифровать и расшифровать свою строку, используете разные ключи, которые вы каждый раз генерируете заново в классах Encrypt/Decrypt.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
samodum
@samodum
Какой вопрос - такой и ответ
Ты используешь разные ключи
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы