C# Java 3DES加密解密 扩展及修正 问题

注: C#已亲测及做扩展, Java 部分未做验证

/// <summary>
/// 3DES加密解密
/// -----------------------------------------------------------
/// 说明:
/// 转载自网上http://bbs.csdn.net/topics/350158619
/// 并加以扩展
/// 修正:
/// 1. 修改正解密后出现 ' '
/// 注: 1. 向量不能小于8位
/// 2. 明文末尾如果是带' '字符,则会一起去掉
/// -----------------------------------------------------------
/// 扩展人:Wuyf    11222337#qq.com
/// 日 期:2014-11-29
/// </summary>

C# 代码 

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Web;

namespace WuFrame.Tool
{
    /// <summary>
    /// 3DES 加密解密
    /// -----------------------------------------------------------
    /// 说明:
    ///     转载自网上http://bbs.csdn.net/topics/350158619
    ///     并加以扩展
    /// 修正:
    ///     1. 修改正解密后出现 ' '
    /// 注: 1. Key必须为24位
    ///     2. 向量不能小于8位
    ///     3. 明文末尾如果是带' '字符,则会一起去掉
    /// -----------------------------------------------------------
    /// 扩展人:Wuyf 11222337#qq.com
    /// 日  期:2014-11-29
    /// </summary>
    public class Des3Tool
    {
        #region CBC模式**

        #region 扩展方法

        /// <summary>
        /// 3DES 加密(字符串参数和返回值)
        /// </summary>
        /// <param name="key">密钥</param>
        /// <param name="iv">向量</param>
        /// <param name="data">明文</param>
        /// <param name="isRetBase64">true:返回base64,false:返回Utf8</param>
        /// <returns></returns>
        public static string Des3EncodeCBC(string key, string iv, string data)
        {
            string rtnResult = string.Empty;
            byte[] rtnValue = null;
            byte[] keyArr = Encoding.UTF8.GetBytes(key);
            byte[] ivArr = Encoding.UTF8.GetBytes(iv);
            byte[] dataArr = Encoding.UTF8.GetBytes(data);

            rtnValue = Des3EncodeCBC(keyArr, ivArr, dataArr);

            rtnResult = Convert.ToBase64String(rtnValue);

            return rtnResult;
        }

        /// <summary>
        /// 3DES 解密(字符串参数和返回值)
        /// </summary>
        /// <param name="key">密钥</param>
        /// <param name="iv">向量</param>
        /// <param name="data">明文</param>
        /// <returns></returns>
        public static string Des3DecodeCBC(string key, string iv, string dataEnBase64)
        {
            string rtnResult = string.Empty;
            byte[] rtnValue = null;
            byte[] keyArr = Encoding.UTF8.GetBytes(key);
            byte[] ivArr = Encoding.UTF8.GetBytes(iv);
            byte[] dataArr = Convert.FromBase64String(dataEnBase64);

            rtnValue = Des3DecodeCBC(keyArr, ivArr, dataArr);

            rtnResult = Encoding.UTF8.GetString(rtnValue).TrimEnd('