我正在尝试解密字符串 "kads#)9kl11as33!@#d" 我从后端服务器收到的字符串,该服务器使用 OpenSSL 使用 AES-256-CBC 加密字符串。有代码块:

public static String decryptText(String textToDecrypt) {
    try {
        byte[] base64TextToDecrypt = Base64.encodeBase64(textToDecrypt.getBytes("UTF-8"));
        byte[] guid = "fjakdsjkld;asfj".getBytes("UTF-8");
        byte[] iv = new byte[16];
        System.arraycopy(guid, 0, iv, 0, guid.length);
        IvParameterSpec ips = new IvParameterSpec(iv);
        byte[] secret = DECRYPTION_SECRET_HASH.getBytes("UTF-8");
        SecretKeySpec secretKey = new SecretKeySpec(secret, "AES");
        Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
        // decryption pass
        cipher.init(Cipher.DECRYPT_MODE, secretKey, ips);
        byte[] converted = cipher.doFinal(base64TextToDecrypt);
        System.out.println(new String(converted));
    } catch (Exception e) {
        e.printStackTrace();
        Log.e(TAG, "Decipher error for " + textToDecrypt, e);
    }
    return "";
}

不幸的是,当我到达

byte[] converted = cipher.doFinal(base64TextToDecrypt);

语句抛出以下异常:

 javax.crypto.IllegalBlockSizeException: last block incomplete in decryption

有任何想法吗?


 您阅读本篇文章共花了: