Ошибки возвращаются при попытке расшифровать данные с помощью Secretkey - PullRequest
0 голосов
/ 08 июня 2018

В настоящее время я использую DES в качестве практического метода для шифрования / дешифрования данных (я знаю, что это не отраслевая практика!), И я сталкиваюсь с ошибкой при дешифровании (вот вывод):

java.security.InvalidKeyException: Parameters missing
at com.sun.crypto.provider.CipherCore.init(CipherCore.java:469)
    at com.sun.crypto.provider.DESCipher.engineInit(DESCipher.java:186)
    at javax.crypto.Cipher.implInit(Cipher.java:802)
    at javax.crypto.Cipher.chooseProvider(Cipher.java:864)
    at javax.crypto.Cipher.init(Cipher.java:1249)
    at javax.crypto.Cipher.init(Cipher.java:1186)
    at CryptoPrac.Encrypt_Decrypt.Decrypt(Encrypt_Decrypt.java:68)
    at CryptoPrac.Crypto_Main.main(Crypto_Main.java:35)

Это мой код:

public byte[] Decrypt(byte[] encrypted)
{
    try
    {
        KeyStore keyStore = KeyStore.getInstance("JCEKS");
        keyStore.load(new FileInputStream("output.jceks"), "password".toCharArray());
        SecretKey key = (SecretKey) keyStore.getKey("key", "password".toCharArray());
        System.out.println(key.toString());
        Cipher deCipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
        deCipher.init(Cipher.DECRYPT_MODE, key);

        return deCipher.doFinal(encrypted);
    }
    catch (Exception e)
    {
        System.out.println(e.getMessage());
    }
    return null;
}

Я думаю, что это может быть проблемой из-за того, что я пытаюсь привести getKey в качестве секретного ключа, но я не уверен, как это сделать иначе (ключхранится в хранилище ключей как секретный ключ, но он возвращает ошибку, когда ее там нет).

edit: у меня есть файлы политики .jars в ссылочных библиотеках, потому что я думаю, что это может быть проблема сих не признают.

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Когда вы инициализируете deCipher методом init(), IV является необходимым третьим параметром.В зависимости от того, как будет зашифрована исходная строка, будет определяться способ получения этого значения.

0 голосов
/ 08 июня 2018

Если вам не хватает этого " сразу после" ключа

См. В своем коде SecretKey key = (SecretKey) keyStore.getKey("key, "password".toCharArray());

...