标签:append gyp ESS system amp publickey += may not
1 public class Base64
2 {
3 #region Base64加密
4 ///
5 ///Base64加密
6 ///
7 ///
8 ///
9 public static string Base64Code(string Message)
10 {
11 char[] Base64Code = new char[] { ‘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‘, ‘+‘, ‘/‘, ‘=‘ };
12 byte empty = (byte)0;
13 System.Collections.ArrayList byteMessage = new System.Collections.ArrayList(System.Text.Encoding.Default.GetBytes(Message));
14 System.Text.StringBuilder outmessage;
15 int messageLen = byteMessage.Count;
16 //将字符分成3个字节一组,如果不足,则以0补齐
17 int page = messageLen / 3;
18 int use = 0;
19 if ((use = messageLen % 3) > 0)
20 {
21 for (int i = 0; i 3 - use; i++) byteMessage.Add(empty);
22 page++;
23 }
24 //将3个字节的每组字符转换成4个字节一组的。3个一组,一组一组变成4个字节一组
25 //方法是:转换成ASCII码,按顺序排列24位数据,再把这24位数据分成4组,即每组6位。再在每组的的最高位前补两个0凑足一个字节。
26 outmessage = new System.Text.StringBuilder(page * 4); for (int i = 0; i )
27 {
28 //取一组3个字节的组
29 byte[] instr = new byte[3]; instr[0] = (byte)byteMessage[i * 3]; instr[1] = (byte)byteMessage[i * 3 + 1]; instr[2] = (byte)byteMessage[i * 3 + 2];
30 //六个位为一组,补0变成4个字节
31 int[] outstr = new int[4];
32 //第一个输出字节:取第一输入字节的前6位,并且在高位补0,使其变成8位(一个字节)
33 outstr[0] = instr[0] >> 2;
34 //第二个输出字节:取第一输入字节的后2位和第二个输入字节的前4位(共6位),并且在高位补0,使其变成8位(一个字节)
35 outstr[1] = ((instr[0] & 0x03) 4) ^ (instr[1] >> 4);
36 //第三个输出字节:取第二输入字节的后4位和第三个输入字节的前2位(共6位),并且在高位补0,使其变成8位(一个字节)
37 if (!instr[1].Equals(empty)) outstr[2] = ((instr[1] & 0x0f) 2) ^ (instr[2] >> 6); else outstr[2] = 64;
38 //第四个输出字节:取第三输入字节的后6位,并且在高位补0,使其变成8位(一个字节)
39 if (!instr[2].Equals(empty)) outstr[3] = (instr[2] & 0x3f); else outstr[3] = 64; outmessage.Append(Base64Code[outstr[0]]);
40 outmessage.Append(Base64Code[outstr[1]]);
41 outmessage.Append(Base64Code[outstr[2]]);
42 outmessage.Append(Base64Code[outstr[3]]);
43 }
44 return outmessage.ToString();
45 }
46 #endregion Base64加密
47 #region Base64解密
48 //////Base64解密
49 ///
50 ///
51 ///
52 public static string Base64Decode(string Message)
53 {
54 if ((Message.Length % 4) != 0)
55 {
56 throw new ArgumentException("不是正确的BASE64编码,请检查。", "Message");
57 }
58 if (!System.Text.RegularExpressions.Regex.IsMatch(Message, "^[A-Z0-9/+=]*$", System.Text.RegularExpressions.RegexOptions.IgnoreCase))
59 {
60 throw new ArgumentException("包含不正确的BASE64编码,请检查。", "Message");
61 }
62 string Base64Code = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
63 int page = Message.Length / 4;
64 System.Collections.ArrayList outMessage = new System.Collections.ArrayList(page * 3);
65 char[] message = Message.ToCharArray();
66 for (int i = 0; i )
67 {
68 byte[] instr = new byte[4];
69 instr[0] = (byte)Base64Code.IndexOf(message[i * 4]);
70 instr[1] = (byte)Base64Code.IndexOf(message[i * 4 + 1]);
71 instr[2] = (byte)Base64Code.IndexOf(message[i * 4 + 2]);
72 instr[3] = (byte)Base64Code.IndexOf(message[i * 4 + 3]);
73 byte[] outstr = new byte[3];
74 outstr[0] = (byte)((instr[0] 2) ^ ((instr[1] & 0x30) >> 4));
75 if (instr[2] != 64)
76 {
77 outstr[1] = (byte)((instr[1] 4) ^ ((instr[2] & 0x3c) >> 2));
78 }
79 else
80 {
81 outstr[2] = 0;
82 }
83 if (instr[3] != 64)
84 {
85 outstr[2] = (byte)((instr[2] 6) ^ instr[3]);
86 }
87 else
88 {
89 outstr[2] = 0;
90 }
91 outMessage.Add(outstr[0]);
92 if (outstr[1] != 0) outMessage.Add(outstr[1]);
93 if (outstr[2] != 0) outMessage.Add(outstr[2]);
94 }
95 byte[] outbyte = (byte[])outMessage.ToArray(Type.GetType("System.Byte"));
96 return System.Text.Encoding.Default.GetString(outbyte);
97 }
98 #endregion Base64解密
99 #region RSA加密解密
100 ///
101 /// RSA加密
102 ///
103 ///
104 ///
105 ///
106 public static string RSAEncrypt(string publickey, string content)
107 {
108 publickey = @"5m9m14XH3oqLJ8bNGw9e4rGpXpcktv9MSkHSVFVMjHbfv+SJ5v0ubqQxa5YjLN4vc49z7SVju8s0X4gZ6AzZTn06jzWOgyPRV54Q4I0DCYadWW4Ze3e+BOtwgVU1Og3qHKn8vygoj40J6U85Z/PTJu3hN1m75Zr195ju7g9v4Hk=AQAB";
109 RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
110 byte[] cipherbytes;
111 rsa.FromXmlString(publickey);
112 cipherbytes = rsa.Encrypt(Encoding.UTF8.GetBytes(content), false);
113
114 return Convert.ToBase64String(cipherbytes);
115 }
116
117 ///
118 /// RSA解密
119 ///
120 ///
121 ///
122 ///
123 public static string RSADecrypt(string privatekey, string content)
124 {
125 privatekey = @"5m9m14XH3oqLJ8bNGw9e4rGpXpcktv9MSkHSVFVMjHbfv+SJ5v0ubqQxa5YjLN4vc49z7SVju8s0X4gZ6AzZTn06jzWOgyPRV54Q4I0DCYadWW4Ze3e+BOtwgVU1Og3qHKn8vygoj40J6U85Z/PTJu3hN1m75Zr195ju7g9v4Hk=AQAB/hf2dnK7rNfl3lbqghWcpFdu778hUpIEBixCDL5WiBtpkZdpSw90aERmHJYaW2RGvGRi6zSftLh00KHsPcNUMw==
6Cn/jOLrPapDTEp1Fkq+uz++1Do0eeX7HYqi9rY29CqShzCeI7LEYOoSwYuAJ3xA/DuCdQENPSoJ9KFbO4Wsow==
ga1rHIJro8e/yhxjrKYo/nqc5ICQGhrpMNlPkD9n3CjZVPOISkWF7FzUHEzDANeJfkZhcZa21z24aG3rKo5Qnw==MNGsCB8rYlMsRZ2ek2pyQwO7h/sZT8y5ilO9wu08Dwnot/7UMiOEQfDWstY3w5XQQHnvC9WFyCfP4h4QBissyw==EG02S7SADhH1EVT9DD0Z62Y0uY7gIYvxX/uq+IzKSCwB8M2G7Qv9xgZQaQlLpCaeKbux3Y59hHM+KpamGL19Kg==vmaYHEbPAgOJvaEXQl+t8DQKFT1fudEysTy31LTyXjGu6XiltXXHUuZaa2IPyHgBz0Nd7znwsW/S44iql0Fen1kzKioEL3svANui63O3o5xdDeExVM6zOf1wUUh/oldovPweChyoAdMtUzgvCbJk1sYDJf++Nr0FeNW1RB1XG30=";
126 RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
127 byte[] cipherbytes;
128 rsa.FromXmlString(privatekey);
129 cipherbytes = rsa.Decrypt(Convert.FromBase64String(content), false);
130
131 return Encoding.UTF8.GetString(cipherbytes);
132 }
133 #endregion RSA加密解密
134
135 }
C#帮助类:Base64
标签:append gyp ESS system amp publickey += may not
原文地址:https://www.cnblogs.com/qinyi173/p/10222906.html