Java AES解密十六进制

时间:2019-02-21 09:26:14

标签: java aes

我正在一个需要解密Java中AES加密的项目。为了进行测试,我使用了一个在线计算器,用密钥“ 0123456789ABCDEF”和一个空IV“ 0000000000000000”对“ Hello World”进行加密。我在用Java解密时遇到问题。

    String keyHex = "0123456789ABCDEF";
    String ivHex = "0000000000000000";
    String inputHex = "ED488015821C37D59CBA611B19A8EAF3";

    // Hex to byte arrays
    var keyBytes = hexToByte(keyHex);
    var inputBytes = hexToByte(inputHex);
    var ivBytes = hexToByte(ivHex);

    // Add padding to key
    var paddingKey = new byte[16];
    System.arraycopy(keyBytes, 0, paddingKey,0, keyBytes.length);

    // Add padding to iv
    var paddingIV = new byte[16];
    System.arraycopy(ivBytes, 0, paddingIV,0, ivBytes.length);

    IvParameterSpec ivSpec = new IvParameterSpec(paddingIV);
    SecretKeySpec keySpec = new SecretKeySpec(paddingKey, "AES");

    String alg = "AES/CBC/NoPadding";
    Cipher cipher = Cipher.getInstance(alg);
    cipher.init(Cipher.DECRYPT_MODE, keySpec, ivSpec);

    byte[] original = cipher.doFinal(inputBytes);
    System.out.println(Arrays.toString(original));
    String s = new String(original);
    System.out.println("Decrypted: " + s);

输出错误: output

我的猜测之一是我对密钥/ IV使用了错误的填充,但是如果我不添加填充,它将抱怨密钥长度不正确。

有人能发现我的错误吗?

0 个答案:

没有答案