BRNo8Mzl5CL+gRqdd_AM6fQuzf}k5|&D}kpbB5YkG#3Bp1KHNq2d_T6@+IeMix_InnjvJnzs1KNrO8?PWAD
zwHUc-1VgGp$wH%79QNq_-CyjB-EK(%X-9y4_6UIzrwTVASAqRH(E_qy3f8Jx
z{l4LGwD;l8!l?Dz5ny&79Q+xsmG@IOZfki72&AN7L|-w)+w|Mu2c#|v8p%q=Oc2%D
zp|}pCH95gZq~a>l-=7rQvi~ZkkM_~SuW^-k_KNmCb;#@?y)0W-+`SqSRTlLwp43gu
zGj!IG@J-EyekNDYPCzPV@^Q|4P>wu=bx%HK;W~Cbh1j;T(Kj-5g5>fhgWqCp5;q%j
zC00*?#s&dM?^!gY8)Jb-Pw8uYZ#U>eSyUuIT?Iq54%35N8wU`
ze@g|lu&T3~XN>MIJ9Kts@eUHeuv{Q%am&XT02#LHUy4A+P7Ic-G8BVr4ahAcw)I$&
z>qJ`+nIZQFQEmxi4L+2D4FS1Z>@oRjnLznuZ{3Bl70s#?E4`oND+Xs!`UY=(2(~z4
zMODeS-J-)J3W>P6-AjJ>@f~%32~J$*U{HiEZ%(J}(?
z1uP-Jtx;wzrNYWpzZp$^W}SxMS+KZVneLuvbkNI9O1F$8yGQ8%?~7B>bkT(nlFm@=
z0Wafw$S3=Ja~a14JAaXizUp&8J&is<6cbY;{`4|p=sY{R3%7Bl^bFo0j)w*5QS@-V
z4COoe+#k7*hBX=Q3r3Xf8vR1Pii$}geFDBQCJ#jO@I7zv@Bb@nh44aI8t~hX=UOfpltQv6=tk4LiGYpDh
zyrYe)e$cT!B};@}k(AMf@_F^2+heS5iw6dj|Fu2cpEI!>aH2s&XXakZ7u0S=yBAi^
z=jVfQ8jX(FVA8pTwHktJ7>*lrz~S@X{^=k8`#=5TKf~vr> 8) & 0xFF));
- output.Append((char)((input >> 16) & 0xFF));
- output.Append((char)((input >> 24) & 0xFF));
- return output.ToString();
+ var output = new StringBuilder();
+ output.Append((char)((input & 0xFF)));
+ output.Append((char)((input >> 8) & 0xFF));
+ output.Append((char)((input >> 16) & 0xFF));
+ output.Append((char)((input >> 24) & 0xFF));
+ return output.ToString();
}
+ #endregion
+ #region Base64 encoding/decoding
+ public string Base64Encode(string plainText)
+ {
+ var plainTextBytes = Encoding.UTF8.GetBytes(plainText);
+ return Convert.ToBase64String(plainTextBytes);
+ }
+ /*public string Base64Encode(byte[] data)
+ return Convert.ToBase64String(data);
+ public char[] Base64Encode(byte[] data)
+ {
+ int length, length2;
+ int blockCount;
+ int paddingCount;
+
+ length = data.Length;
+
+ if ((length % 3) == 0)
+ {
+ paddingCount = 0;
+ blockCount = length / 3;
+ }
+ else
+ {
+ paddingCount = 3 - (length % 3);
+ blockCount = (length + paddingCount) / 3;
+ }
+
+ length2 = length + paddingCount;
+
+ Console.WriteLine("length: " + length);
+ Console.WriteLine("length2: " + length2);
+ Console.WriteLine("blockCount: " + blockCount);
+ Console.WriteLine("paddingCount: " + paddingCount);
+
+ byte[] source2;
+ source2 = new byte[length2];
+
+ for (int x = 0; x < length2; x++)
+ source2[x] = x < length ? data[x] : (byte)0;
+
+ byte b1, b2, b3;
+ byte temp, temp1, temp2, temp3, temp4;
+ var buffer = new byte[blockCount * 4];
+ var result = new char[blockCount * 4];
+
+ for (int x = 0; x < blockCount; x++)
+ {
+ b1 = source2[x * 3];
+ b2 = source2[x * 3 + 1];
+ b3 = source2[x * 3 + 2];
+
+ temp1 = (byte)((b1 & 252) >> 2);
+
+ temp = (byte)((b1 & 3) << 4);
+ temp2 = (byte)((b2 & 240) >> 4);
+ temp2 += temp;
+
+ temp = (byte)((b2 & 15) << 2);
+ temp3 = (byte)((b3 & 192) >> 6);
+ temp3 += temp;
+
+ temp4 = (byte)(b3 & 63);
+
+ buffer[x * 4] = temp1;
+ buffer[x * 4 + 1] = temp2;
+ buffer[x * 4 + 2] = temp3;
+ buffer[x * 4 + 3] = temp4;
+ }
+
+ for (int x = 0; x < blockCount * 4; x++)
+ result[x] = SixBitToChar(buffer[x]);
+
+ switch (paddingCount)
+ {
+ case 0:
+ break;
+ case 1:
+ result[blockCount * 4 - 1] = '=';
+ break;
+ case 2:
+ result[blockCount * 4 - 1] = '=';
+ result[blockCount * 4 - 2] = '=';
+ break;
+ default:
+ break;
+ }
+
+ return result;
+ }
+ private static char SixBitToChar(byte b)
+ {
+ var 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 ((b >= 0) && (b <= 63))
+ {
+ return lookupTable[(int)b];
+ }
+ else
+ {
+ return ' ';
+ }
+ }*/
+
+ public string Base64Decode(string base64EncodedData)
+ {
+ var base64EncodedBytes = Convert.FromBase64String(base64EncodedData);
+ return Encoding.UTF8.GetString(base64EncodedBytes);
+ }
+ #endregion
}
}