Шифрование AES в Java и расшифровка в угловых 7 - PullRequest
0 голосов
/ 23 сентября 2019

У меня есть требование, при котором я хочу зашифровать данные в Java и расшифровать эти данные в Angular 7. Я использовал AES для шифрования данных в Java и CryptoJS для расшифровки в угловом.Ключ в обоих угловых 7 и Java одинаковы.Ниже мой код Java:

public class EncryptionAndDecryption {
    private static SecretKeySpec secretKeySpec;
    private static byte[] key;

    public static void setKey(String myKey) {
        MessageDigest sha = null;
        try {
            key = myKey.getBytes("UTF-8");
            sha = MessageDigest.getInstance("SHA-1");
            key = sha.digest(key);
            key = Arrays.copyOf(key, 16);
            secretKeySpec = new SecretKeySpec(key, "AES");
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
    }

    public static String encrypt(String strToEncrypt, String secret) {
        try {
            setKey(secret);
            Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
            cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
            return Base64.getEncoder().encodeToString(cipher.doFinal(strToEncrypt.getBytes("UTF-8")));
        } catch (Exception e) {
            System.out.println("Error while encrypting: " + e.toString());
        }
        return null;
    }

}

И ниже угловой код:

get(keys, value) {
    const key = CryptoJS.enc.Utf8.parse(keys);
    const iv = CryptoJS.enc.Utf8.parse(keys);
    console.log('key', key);
    console.log('iv', iv);
    const decrypted = CryptoJS.AES.decrypt(value, key, {
      keySize: 16,
      iv: iv,
      mode: CryptoJS.mode.CBC,
      padding: CryptoJS.pad.Pkcs7
    });
    return decrypted.toString(CryptoJS.enc.Utf8);
  }

Я получаю ошибку ниже:

ERROR Error: Malformed UTF-8 data
    at Object.stringify (core.js:478)
    at WordArray.init.toString (core.js:215)
...