Не уверен, как исправить эту ошибку "java.security.InvalidKeyException" - PullRequest
0 голосов
/ 18 апреля 2019

Я использую шифрование RC4 в Java для шифрования открытого текста и преобразования его в зашифрованный текст с помощью ключа.Однако, после запуска моей программы, я сталкиваюсь с этой ошибкой ниже.Я понятия не имею, как решить проблему.Помощь очень ценится.Спасибо!

Исключение в потоке "main" java.security.InvalidKeyException: длина ключа должна быть от 40 до 1024 бит в com.sun.crypto.provider.ARCFOURCipher.getEncodedKey (ARCFOURCipher.java:202) в com.sun.crypto.provider.ARCFOURCipher.engineGetKeySize (ARCFOURCipher.java:259) в javax.crypto.Cipher.passCryptoPermCheck (Cipher.java:1067) в javax.crypto.Cipher.Cipher.Cipher.Cher.в javax.crypto.Cipher.implInit (Cipher.java:801) в javax.crypto.Cipher.chooseProvider (Cipher.java:864) в javax.crypto.Cipher.init (Cipher.java:1249) в javax.crypto.Cipher.init (Cipher.java:1186) на узле Host (Host.java:80) на узле Host.main (Host.java:134)

        byte[] decodedKey = Base64.getDecoder().decode(pwwithoutspace);

        SecretKey originalKey = new SecretKeySpec(decodedKey, 0, decodedKey.length, "RC4"); 
        /* Encryption */

        byte[] plainTextByteArray = gxmodp.getBytes();

        Cipher cipher = Cipher.getInstance(ENCRYPTION_ALGORITHM);
        cipher.init(Cipher.ENCRYPT_MODE, originalKey);
        byte[] encrypted = cipher.doFinal(plainTextByteArray);
        out.writeUTF("Ciphertext from Host: " + encrypted); // send to Client
        cipher.init(Cipher.DECRYPT_MODE, originalKey);
        byte[] decrypted = cipher.doFinal(encrypted);

        System.out.println("Decrypted: " + new String(decrypted));
...