Java AES解密:最后的随机字符和消息

使用AES解密消息时遇到问题。 最后,当我期待一个消息,例如

ala123

而不是我收到某事如:

...6�b}7�k�8�vFP�8~%��_zժF��FW��O_e���ó������������ala123

我传递给加密的消息构建为:

  • 密码密钥是来自AES_TOKEN的SHA-256
  • 密码IV是一些字符,然后存储在消息中(在beginnig处)
  • 解密的消息被包装到Base64中
  • 问题是为什么最终我最终会收到我期望的信息,但是在开始时有很多垃圾信息?

    我的加密代码是:

    private static final String AES_TOKEN = "my_very_secret_token";
    
    // encrypted is base64 string
    public String decrypt(String encrypted) throws Exception {
        byte[] decrypted = Base64.getDecoder().decode(encrypted);
        return new String(aesDecrypt(decrypted), "UTF-8");
    }
    
    private byte[] aesDecrypt(byte[] message) throws Exception {
        Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
    
        byte[] token = MessageDigest.getInstance("SHA-256").digest(AES_TOKEN.getBytes());
        SecretKeySpec secretKey = new SecretKeySpec(token, "AES");
    
        IvParameterSpec iv = new IvParameterSpec(Arrays.copyOf(message, 16));
    
        cipher.init(Cipher.DECRYPT_MODE, secretKey, iv);
        return cipher.doFinal(message);
    }
    

    它看起来像你没有去除开头的IV message在阅读之后iv 。 这将解释垃圾是在解密消息的开始。

    链接地址: http://www.djcxy.com/p/66301.html

    上一篇: Java AES Decryption: random chars & message at the end

    下一篇: Error:java: javacTask: source release 8 requires target release 1.8