C#BASE64 UTF8字串加密解密

來源:互聯網
上載者:User

標籤:

base 64 解碼

base64 bb = new base64();string  orgStr= Encoding.Default.GetString(bb.GetDecoded("base64編譯後的字元"));

UTF8

Subject = Encoding.GetEncoding("utf-8").GetString(Convert.FromBase64String("utf編譯後的字元")); 

base64加密

public class base64    {        char[] source;        int length, length2, length3;        int blockCount;        int paddingCount;        public static base64 Decoder = new base64();        public base64()        { }        private void init(char[] input)        {            int temp = 0;            source = input;            length = input.Length;            for (int x = 0; x < 2; x++)            {                if (input[length - x - 1] == ‘=‘)                    temp++;            }            paddingCount = temp;            blockCount = length / 4;            length2 = blockCount * 3;        }        /// <summary>        /// 加密後的字串解密        /// </summary>        /// <param name="strInput"></param>        /// <returns></returns>        public byte[] GetDecoded(string strInput)        {            //初始化            init(strInput.ToCharArray());            byte[] buffer = new byte[length];            byte[] buffer2 = new byte[length2];            for (int x = 0; x < length; x++)            {                buffer[x] = char2sixbit(source[x]);            }            byte b, b1, b2, b3;            byte temp1, temp2, temp3, temp4;            for (int x = 0; x < blockCount; x++)            {                temp1 = buffer[x * 4];                temp2 = buffer[x * 4 + 1];                temp3 = buffer[x * 4 + 2];                temp4 = buffer[x * 4 + 3];                b = (byte)(temp1 << 2);                b1 = (byte)((temp2 & 48) >> 4);                b1 += b;                b = (byte)((temp2 & 15) << 4);                b2 = (byte)((temp3 & 60) >> 2);                b2 += b;                b = (byte)((temp3 & 3) << 6);                b3 = temp4;                b3 += b;                buffer2[x * 3] = b1;                buffer2[x * 3 + 1] = b2;                buffer2[x * 3 + 2] = b3;            }            length3 = length2 - paddingCount;            byte[] result = new byte[length3];            for (int x = 0; x < length3; x++)            {                result[x] = buffer2[x];            }            return result;        }        private byte char2sixbit(char c)        {            char[] lookupTable = new char[64]{                   ‘A‘,‘B‘,‘C‘,‘D‘,‘E‘,‘F‘,‘G‘,‘H‘,‘I‘,‘J‘,‘K‘,‘L‘,‘M‘,‘N‘,                 ‘O‘,‘P‘,‘Q‘,‘R‘,‘S‘,‘T‘,‘U‘,‘V‘,‘W‘,‘X‘,‘Y‘, ‘Z‘,                 ‘a‘,‘b‘,‘c‘,‘d‘,‘e‘,‘f‘,‘g‘,‘h‘,‘i‘,‘j‘,‘k‘,‘l‘,‘m‘,‘n‘,                 ‘o‘,‘p‘,‘q‘,‘r‘,‘s‘,‘t‘,‘u‘,‘v‘,‘w‘,‘x‘,‘y‘,‘z‘,                 ‘0‘,‘1‘,‘2‘,‘3‘,‘4‘,‘5‘,‘6‘,‘7‘,‘8‘,‘9‘,‘+‘,‘/‘};            if (c == ‘=‘)                return 0;            else            {                for (int x = 0; x < 64; x++)                {                    if (lookupTable[x] == c)                        return (byte)x;                }                return 0;            }        }        /// <summary>        /// Base64解密,採用utf8編碼方式解密        /// </summary>        /// <param name="result">待解密的密文</param>        /// <returns>解密後的字串</returns>        public static string DecodeBase64(string result)        {            return DecodeBase64(Encoding.UTF8, result);        }        /// <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加密        /// </summary>        /// <param name="codeName">加密採用的編碼方式</param>        /// <param name="source">待加密的明文</param>        /// <returns></returns>        public static string EncodeBase64(Encoding encode, string source)        {            string decode = "";            byte[] bytes = encode.GetBytes(source);            try            {                decode = Convert.ToBase64String(bytes);            }            catch            {                decode = source;            }            return decode;        }        /// <summary>        /// Base64加密,採用utf8編碼方式加密        /// </summary>        /// <param name="source">待加密的明文</param>        /// <returns>加密後的字串</returns>        public static string EncodeBase64(string source)        {            return EncodeBase64(Encoding.UTF8, source);        }    }

 

C#BASE64 UTF8字串加密解密

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.