/// <summary>
 ///  �����û��������룬����ʹ�õĽ����㷨����ɶ�ָ���ַ����Ľ��ܣ�
 ///  <remarks>ָ���Ľ����㷨������ַ���ʹ�ü��ܵ��㷨һ��
 /// �����㷨����������ͳ�ʼ��ƫ������Ҫ��һ��
 /// DES��RC2:�������볤�Ⱥͳ�ʼ��ƫ�������� ������4���ַ�;
 /// Rijndael:�������볤�ȿ�����12,16���ַ�,��ʼ��ƫ����Ϊ8���ַ�;
 /// TripleDes:�������볤�ȿ���Ϊ8����12���ַ�,��ʼ��ƫ����Ϊ4���ַ�;
 /// </summary>
 /// <param name="plainText">������������</param>
 /// <param name="algorithm">ʹ�õļ����㷨</param>
 /// <param name="userInitialVector">����ʱʹ�õ���ʼƫ����</param>
 /// <param name="encryptionText">���ܺ���ַ���</param>
 /// <returns></returns>
 public static string Decrypt(string plainText, EncryptionAlgorithm algorithm, string userInitialVector, string encryptionText)
 {
     string result = string.Empty;
     SetKey(algorithm, plainText);
     SetInitialVector(algorithm, userInitialVector);
     EncryptTransform transform = new EncryptTransform(m_Key, m_initVec);
     byte[] bytesData = Convert.FromBase64String(encryptionText);
     byte[] bytes = null;
     try
     {
         bytes = transform.Decrypt(algorithm, bytesData);
     }
     catch (Exception exception)
     {
         throw exception;
     }
     if (bytes.Length > 0)
     {
         result = Encoding.Unicode.GetString(bytes);
     }
     m_Key = transform.Key;
     m_initVec = transform.InitVec;
     return result;
 }
        /// <summary>
        /// �����û��������룬���μ���ʹ�õ��㷨����ɶ�ָ���ַ����ļ���
        /// <example><![CDATA[string result = EncryptionHelper.Encrypt("1234", EncryptionAlgorithm.Rc2, "5678", text);]]></example>
        /// <remarks>�����㷨����������ͳ�ʼ��ƫ������Ҫ��һ��
        /// DES��RC2:�������볤�Ⱥͳ�ʼ��ƫ�������� ������4���ַ�;
        /// Rijndael:�������볤�ȿ�����12,16���ַ�,��ʼ��ƫ����Ϊ8���ַ�;
        /// TripleDes:�������볤�ȿ���Ϊ8����12���ַ�,��ʼ��ƫ����Ϊ4���ַ�;
        /// ע��:����ṩ�����������ƫ�����������㷨�ı�׼,��ʹ���������,ʹ�����ڼ��ܺ�ͨ���ṩ��Key��InitVector���Ի�ü���ʱʹ�õ����������ƫ����
        /// </remarks>
        /// </summary>
        /// <param name="plainText">ʹ�õļ�����������</param>
        /// <param name="algorithm">�����㷨ö�ٶ���</param>
        /// <param name="userInitialVector">ʹ�õļ�����ʼƫ����</param>
        /// <param name="encryptionText">��Ҫ���ܵ��ַ�</param>
        /// <returns></returns>
        public static string Encrypt(string plainText, EncryptionAlgorithm algorithm, string userInitialVector, string encryptionText)
        {
            string result = string.Empty;

            if (encryptionText.Length > 0)
            {
                SetKey(algorithm, plainText);
                SetInitialVector(algorithm, userInitialVector);
                EncryptTransform transform = new EncryptTransform(m_Key,m_initVec);
                byte[] bytes = Encoding.Unicode.GetBytes(encryptionText);
                byte[] inArray = transform.Encrypt(algorithm, bytes);
                if (inArray.Length > 0)
                {
                    result = Convert.ToBase64String(inArray);
                }
                m_Key = transform.Key;
                m_initVec = transform.InitVec;

            }
            return result;
        }