//----------------------------- Base64 class --------------------------------------
//---------------------------------------------------------------------------------
//---File: clsBase64
//---Description: The class file to encode string or decode string in base algorithm
//---Author: Knight
//---Created Date: Oct.8, 2005
//---Modified Date: Jul.4, 2006
//---------------------------------------------------------------------------------
//----------------------------{ Base64 class }-------------------------------------
using System;
namespace Base64
...{
using System.Text;
/**//// <summary>
/// Summary description for clsBase64.
/// </summary>
public class clsBase64
...{
protected clsBase64()
...{
//Avoid to be inited
}
Base64_Algorithm_Implement#region Base64_Algorithm_Implement
/**//// <summary>
/// Create base64 char array using default base64 char array
/// </summary>
/// <param name="CreatePara"></param>
/// <returns>return the new base64 char array</returns>
private static char[] CreateBase64Char( ref char[] CreatePara )
...{
char[] BaseTable=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','+','/'};
const int CREATE_TYPE = 8;
byte bParaValue = 0;
byte bTemp;
for( int i = 0; i < CreatePara.Length; i++ )
...{
bTemp = ( byte )( CreatePara[i] );
switch( bTemp % CREATE_TYPE )
...{
case 1:
// 00000001
bTemp =( byte )( bTemp ^ 0x01 );
break;
case 2:
// 00000010
bTemp =( byte )( bTemp ^ 0x02 );
break;
case 3:
// 00000100
bTemp =( byte )( bTemp ^ 0x04 );
break;
case 4:
// 00001000
bTemp =( byte )( bTemp ^ 0x08 );
break;
case 5:
// 00010000
bTemp =( byte )( bTemp ^ 0x10 );
break;
case 6:
// 00100000
bTemp =( byte )( bTemp ^ 0x20 );
break;
case 7:
// 01000000
bTemp =( byte )( bTemp ^ 0x40 );
break;
default:
// 10000000
bTemp =( byte )( bTemp ^ 0x80 );
break;
}
bParaValue =( byte )( bParaValue ^ bTemp );
}
char chrTemp;
int nIndex;
switch( bParaValue % CREATE_TYPE )
...{
case 1:
// Exechange 0 <--> 1, 2 <--> 3, 4 <--> 5, 6 <--> 7
for( int i = 0; i < BaseTable.Length / CREATE_TYPE; i++ )
...{
nIndex = i * CREATE_TYPE;
chrTemp = BaseTable[nIndex];
BaseTable[nIndex] = BaseTable[nIndex + 1];
BaseTable[nIndex + 1] = chrTemp;
chrTemp = BaseTable[nIndex + 2];
BaseTable[nIndex + 2] = BaseTable[nIndex + 3];
BaseTable[nIndex + 3] = chrTemp;
chrTemp = BaseTable[nIndex + 4];
BaseTable[nIndex + 4] = BaseTable[nIndex + 5];
BaseTable[nIndex + 5] = chrTemp;
chrTemp = BaseTable[nIndex + 6];
BaseTable[nIndex + 6] = BaseTable[nIndex + 7];
BaseTable[nIndex + 7] = chrTemp;
}
break;
case 2:
// Exechange 0 <--> 2, 1 <--> 3, 4 <--> 6, 5 <--> 7
for( int i = 0; i < BaseTable.Length / CREATE_TYPE; i++ )
...{
nIndex = i * CREATE_TYPE;
chrTemp = BaseTable[nIndex];
BaseTable[nIndex] = BaseTable[nIndex + 2];
BaseTable[nIndex + 2] = chrTemp;
chrTemp = BaseTable[nIndex + 1];
BaseTable[nIndex + 1] = BaseTable[nIndex + 3];
BaseTable[nIndex + 3] = chrTemp;
chrTemp = BaseTable[nIndex + 4];
BaseTable[nIndex + 4] = BaseTable[nIndex + 6];
BaseTable[nIndex + 6] = chrTemp;
chrTemp = BaseTable[nIndex + 5];
BaseTable[nIndex + 5] = BaseTable[nIndex + 7];
BaseTable[nIndex + 7] = chrTemp;
}
break;
case 3:
// Exechange 0 <--> 3, 1 <--> 2, 4 <--> 7, 5 <--> 6
for( int i = 0; i < BaseTable.Length / CREATE_TYPE; i++ )
...{
nIndex = i * CREATE_TYPE;
chrTemp = BaseTable[nIndex];
BaseTable[nIndex] = BaseTable[nIndex + 3];
BaseTable[nIndex + 3] =
//---------------------------------------------------------------------------------
//---File: clsBase64
//---Description: The class file to encode string or decode string in base algorithm
//---Author: Knight
//---Created Date: Oct.8, 2005
//---Modified Date: Jul.4, 2006
//---------------------------------------------------------------------------------
//----------------------------{ Base64 class }-------------------------------------
using System;
namespace Base64
...{
using System.Text;
/**//// <summary>
/// Summary description for clsBase64.
/// </summary>
public class clsBase64
...{
protected clsBase64()
...{
//Avoid to be inited
}
Base64_Algorithm_Implement#region Base64_Algorithm_Implement
/**//// <summary>
/// Create base64 char array using default base64 char array
/// </summary>
/// <param name="CreatePara"></param>
/// <returns>return the new base64 char array</returns>
private static char[] CreateBase64Char( ref char[] CreatePara )
...{
char[] BaseTable=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','+','/'};
const int CREATE_TYPE = 8;
byte bParaValue = 0;
byte bTemp;
for( int i = 0; i < CreatePara.Length; i++ )
...{
bTemp = ( byte )( CreatePara[i] );
switch( bTemp % CREATE_TYPE )
...{
case 1:
// 00000001
bTemp =( byte )( bTemp ^ 0x01 );
break;
case 2:
// 00000010
bTemp =( byte )( bTemp ^ 0x02 );
break;
case 3:
// 00000100
bTemp =( byte )( bTemp ^ 0x04 );
break;
case 4:
// 00001000
bTemp =( byte )( bTemp ^ 0x08 );
break;
case 5:
// 00010000
bTemp =( byte )( bTemp ^ 0x10 );
break;
case 6:
// 00100000
bTemp =( byte )( bTemp ^ 0x20 );
break;
case 7:
// 01000000
bTemp =( byte )( bTemp ^ 0x40 );
break;
default:
// 10000000
bTemp =( byte )( bTemp ^ 0x80 );
break;
}
bParaValue =( byte )( bParaValue ^ bTemp );
}
char chrTemp;
int nIndex;
switch( bParaValue % CREATE_TYPE )
...{
case 1:
// Exechange 0 <--> 1, 2 <--> 3, 4 <--> 5, 6 <--> 7
for( int i = 0; i < BaseTable.Length / CREATE_TYPE; i++ )
...{
nIndex = i * CREATE_TYPE;
chrTemp = BaseTable[nIndex];
BaseTable[nIndex] = BaseTable[nIndex + 1];
BaseTable[nIndex + 1] = chrTemp;
chrTemp = BaseTable[nIndex + 2];
BaseTable[nIndex + 2] = BaseTable[nIndex + 3];
BaseTable[nIndex + 3] = chrTemp;
chrTemp = BaseTable[nIndex + 4];
BaseTable[nIndex + 4] = BaseTable[nIndex + 5];
BaseTable[nIndex + 5] = chrTemp;
chrTemp = BaseTable[nIndex + 6];
BaseTable[nIndex + 6] = BaseTable[nIndex + 7];
BaseTable[nIndex + 7] = chrTemp;
}
break;
case 2:
// Exechange 0 <--> 2, 1 <--> 3, 4 <--> 6, 5 <--> 7
for( int i = 0; i < BaseTable.Length / CREATE_TYPE; i++ )
...{
nIndex = i * CREATE_TYPE;
chrTemp = BaseTable[nIndex];
BaseTable[nIndex] = BaseTable[nIndex + 2];
BaseTable[nIndex + 2] = chrTemp;
chrTemp = BaseTable[nIndex + 1];
BaseTable[nIndex + 1] = BaseTable[nIndex + 3];
BaseTable[nIndex + 3] = chrTemp;
chrTemp = BaseTable[nIndex + 4];
BaseTable[nIndex + 4] = BaseTable[nIndex + 6];
BaseTable[nIndex + 6] = chrTemp;
chrTemp = BaseTable[nIndex + 5];
BaseTable[nIndex + 5] = BaseTable[nIndex + 7];
BaseTable[nIndex + 7] = chrTemp;
}
break;
case 3:
// Exechange 0 <--> 3, 1 <--> 2, 4 <--> 7, 5 <--> 6
for( int i = 0; i < BaseTable.Length / CREATE_TYPE; i++ )
...{
nIndex = i * CREATE_TYPE;
chrTemp = BaseTable[nIndex];
BaseTable[nIndex] = BaseTable[nIndex + 3];
BaseTable[nIndex + 3] =