求大牛把下面这段翻译成java代码,在线等,急急急!!!  public static string AESEncrypt(string str, string key, string iv, bool haveprefix = true)
        {
            byte[] data = Encoding.UTF8.GetBytes(str);
            RijndaelManaged rijndaelCipher = new RijndaelManaged();
            rijndaelCipher.Mode = CipherMode.CBC;
            rijndaelCipher.Padding = PaddingMode.PKCS7;
            rijndaelCipher.KeySize = 128;
            rijndaelCipher.BlockSize = 128;
            rijndaelCipher.Key = System.Text.Encoding.UTF8.GetBytes(key);
            rijndaelCipher.IV = System.Text.Encoding.UTF8.GetBytes(iv);            ICryptoTransform transform = rijndaelCipher.CreateEncryptor();
            byte[] encData = transform.TransformFinalBlock(data, 0, data.Length);            if (haveprefix)
            {
                byte[] prefix = new byte[16];
                Random rand = new Random();
                rand.NextBytes(prefix);
                byte[] lengthByte = BitConverter.GetBytes(encData.Length);
                var list = prefix.ToList();
                list.AddRange(lengthByte);
                list.AddRange(encData);
                encData = list.ToArray();
            }
            return Convert.ToBase64String(encData);
        }        public static string AESDecrypt(string base64Str, string key, string iv, bool haveprefix = true)
        {
            var data = Convert.FromBase64String(base64Str).ToList();
            byte[] encryptedData = haveprefix ? data.GetRange(20, data.Count - 20).ToArray() : data.ToArray();
            RijndaelManaged rijndaelCipher = new RijndaelManaged();
            rijndaelCipher.Mode = CipherMode.CBC;
            rijndaelCipher.Padding = PaddingMode.PKCS7;
            rijndaelCipher.KeySize = 128;
            rijndaelCipher.BlockSize = 128;
            rijndaelCipher.Key = System.Text.Encoding.UTF8.GetBytes(key); ;
            byte[] ivBytes = System.Text.Encoding.UTF8.GetBytes(iv);
            rijndaelCipher.IV = ivBytes;
            ICryptoTransform transform = rijndaelCipher.CreateDecryptor();
            byte[] plainText = transform.TransformFinalBlock(encryptedData, 0, encryptedData.Length);
            return Encoding.UTF8.GetString(plainText);
        }