Получение ошибки «Длина ввода должна быть кратна 16 при расшифровке с использованием шифра с добавлением» - PullRequest
0 голосов
/ 20 апреля 2019

я пытаюсь зашифровать и расшифровать некоторые данные, когда я иду, чтобы запустить расшифровку, я получаю ошибку Input length must be multiple of 16 when decrypting with padded cipher.

Вот мой класс Java;

import java.security.Key;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import com.thoughtworks.xstream.core.util.Base64Encoder;

public class passwordEncoder {

        private static final String ALGORITHM       = "AES";
        private static final String myEncryptionKey = "ThisIsFoundation";
        private static final String UNICODE_FORMAT  = "UTF8";

        public static String encrypt(String valueToEnc) throws Exception {
            Key key = generateKey();
            Cipher c = Cipher.getInstance(ALGORITHM);
            c.init(Cipher.ENCRYPT_MODE, key);
            byte[] encValue = c.doFinal(valueToEnc.getBytes(UNICODE_FORMAT));
            //String encryptedValue = new Base64Encoder().encode(encValue);
            String encryptedValue = new Base64Encoder().encode(encValue);
            return encryptedValue;
        }

        public static String decrypt(String encryptedValue) throws Exception {
            Key key = generateKey();
            Cipher c = Cipher.getInstance(ALGORITHM);
            c.init(Cipher.DECRYPT_MODE, key);
            byte[] decordedValue = new Base64Encoder().decode(encryptedValue);
            byte[] decValue = c.doFinal(decordedValue);
            String decryptedValue = new String(decValue);
            return decryptedValue;
        }

        private static Key generateKey() throws Exception {
            byte[] keyAsBytes;
            keyAsBytes = myEncryptionKey.getBytes(UNICODE_FORMAT);
            Key key = new SecretKeySpec(keyAsBytes, ALGORITHM);
            return key;
        }
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...