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); } }