C# 简单实现对字符串加密和解密

  有两种方式,供大家参考

   /// <summary>
        /// 编译字符串
        /// </summary>
        /// <param name="strUnicode"></param>
        /// <returns></returns>
        public static string FromUnicodeToAscii(string strUnicode)
        {
          
            try
            {
                if (String.IsNullOrEmpty(strUnicode))
                {
                    return String.Empty;
                }
                UnicodeEncoding Unicode = new UnicodeEncoding();

                int byteCount = Unicode.GetByteCount(strUnicode);
                byte[] origbytes = new byte[byteCount];
                origbytes = Unicode.GetBytes(strUnicode);

                StringBuilder strDecoded = new StringBuilder();
                for (int i = 0; i < byteCount; i++)
                {
                    byte b = origbytes[i];
                    //translate each byte into two digits of hexa.
                    strDecoded.Append(b.ToString("X2"));
                    //chDest[i] =  Convert.ToChar(b);
                }
                return strDecoded.ToString();
            }
            catch (Exception err)
            {
                Console.WriteLine(err.Message+" "+err.StackTrace);             
                return "*********异常";
            }
        }
        /// <summary>
        /// 反编译字符串
        /// </summary>
        /// <param name="strAscii"></param>
        /// <returns></returns>
        public static string FromAsciiToUnicode(string strAscii)
        {
       
            try
            {
                if (String.IsNullOrEmpty(strAscii))
                {
                    return String.Empty;
                }
                StringBuilder strNew = new StringBuilder();
                UnicodeEncoding Unicode = new UnicodeEncoding();
                byte[] currbytes = new byte[2];
                for (int i = 0; i < strAscii.Length; i = i + 4)
                {
                    for (int j = 0; j < 2; j++)
                    {
                        //each two hexa digits are becoming one byte
                        currbytes[j] = Convert.ToByte(strAscii.Substring(i + j * 2, 2), 16);
                    }
                    strNew.Append(Unicode.GetString(currbytes));
                }
                return strNew.ToString();
            }
            catch (Exception err)
            {
            
               
                return "******异常";
            }
        }
/// <summary>
    /// 字符串简单加密
    /// </summary>
    public class EncodeAndDecode
    {
        /// <summary>
        /// Base64加密
        /// </summary>
        /// <param name="codeName">加密采用的编码方式</param>
        /// <param name="source">待加密的明文</param>
        /// <returns></returns>
        public static string EncodeBase64(Encoding encode, string source)
        {
            string enstring = "";
            byte[] bytes = encode.GetBytes(source);
            try
            {
                enstring = Convert.ToBase64String(bytes);
            }
            catch
            {
                enstring = source;
            }
            return enstring;
        }

        /// <summary>
        /// Base64加密,采用utf8编码方式加密
        /// </summary>
        /// <param name="source">待加密的明文</param>
        /// <returns>加密后的字符串</returns>
        public static string EncodeBase64(string source)
        {
            return EncodeBase64(Encoding.UTF8, source);
        }

        /// <summary>
        /// Base64解密
        /// </summary>
        /// <param name="codeName">解密采用的编码方式,注意和加密时采用的方式一致</param>
        /// <param name="result">待解密的密文</param>
        /// <returns>解密后的字符串</returns>
        public static string DecodeBase64(Encoding encode, string result)
        {
            string decode = "";
            byte[] bytes = Convert.FromBase64String(result);
            try
            {
                decode = encode.GetString(bytes);
            }
            catch
            {
                decode = result;
            }
            return decode;
        }

        /// <summary>
        /// Base64解密,采用utf8编码方式解密
        /// </summary>
        /// <param name="result">待解密的密文</param>
        /// <returns>解密后的字符串</returns>
        public static string DecodeBase64(string result)
        {
            return DecodeBase64(Encoding.UTF8, result);
        }
    }

猜你喜欢

转载自blog.csdn.net/qq_42335551/article/details/81193849