Безопасность Java RSA - InvalidKeyException - PullRequest
0 голосов
/ 02 июня 2018

В настоящее время я работаю над инструментом для асимметричного шифрования с RSA:

PublicKey FrKey;

public byte[] encrypt(String msg) {

    byte[] msg1 = null;

    Cipher cp = Cipher.getInstance("RSA");
    cp.init(Cipher.ENCRYPT_MODE, FrKey);
    msg1 = cp.doFinal(msg.getBytes());

    return msg1;
}

public void setOpKey(String s) {

        X509EncodedKeySpec pubKeySpec = new X509EncodedKeySpec(Base64.getDecoder().decode(s.getBytes()));
        KeyFactory keyFactory = KeyFactory.getInstance("RSA");
        PublicKey publicKey = keyFactory.generatePublic(pubKeySpec);
        System.out.println("Friends Public: "+s+"\n\n"+publicKey);
}

В то время как функция setOpKey, которая должна устанавливать открытый ключ противника, кажется, работает нормально, когда класс шифрованиявыполняется java возвращает ошибку:

java.security.InvalidKeyException: ни один из установленных провайдеров не поддерживает этот ключ: (null)

Из этой ошибки вы прочитаете, чтоКлюч будет нулевым, но, как видно из вывода консоли ниже, это не так.

Friends Public: / Введенная мной строка, сгенерированная из RSA /

открытый ключ Sun RSA, 1024 бита

модуль: / очень длинное число /

открытый показатель: 65537

Это кажетсябудет ошибка с открытым ключом, но я понятия не имею, как это можно исправить.Буду признателен за любую помощь.

PS: я удалил все предложения try / catch, чтобы сделать код более читабельным.

...