for (i = 1; i < 11; i++)
{
for (j = 0; j < 4; j++)
{
for (k = 0; k < 4; k++)
{
b[k] = w[(i - (j == 0) ? (1) : (0)) * 16 + k * 4 + (j == 0 ? (3) : (j - 1))];
} // end of for
if (j == 0)
{
for (k = 0; k < 4; k++)
{
if (k < 3)
{
b[k] = sBox[b[k + 1]];
continue;
} // end if
b[k] = sBox[0] ^ rCon[i];
} // end of for
} // end if
for (k = 0; k < 4; k++)
{
w[i * 16 + k * 4 + j] = w[(i - 1) * 16 + k * 4 + j] ^ b[k];
} // end of for
} // end of for
} // end of for
for (i = 0; i < 4; i++)
{
for (j = 0; j < 4; j++)
{
tar[i * 4 + j] = src[i * 4 + j] ^ w[i * 4 + j];
} // end of for
} // end of for
for (i = 1; i < 4; i++)
{
for (l = 0; l < i; l++)
{
tmp = tar[i * 4];
for (j = 0; j < 3; j++)
{
tar[i * 4 + j] = tar[i * 4 + (j + 1) % 4];
} // end of for
tar[i * 4 + 3] = tmp;
} // end of for
} // end of for
if (k != 9)
{
for (j = 0; j < 4; j++)
{
for (i = 0; i < 4; i++)
{
tmp = tar[i * 4 + j] ^ tar[(i + 1) % 4 * 4 + j];
b[i] = tar[(i + 1) % 4 * 4 + j] ^ tar[(i + 2) % 4 * 4 + j] ^ tar[(i + 3) % 4 * 4 + j] ^ (tmp > 127 ? (tmp << 1 ^ 283) : (tmp << 1));
} // end of for
for (i = 0; i < 4; i++)
{
tar[i * 4 + j] = b[i];
} // end of for
} // end of for
} // end if
for (i = 0; i < 4; i++)
{
for (j = 0; j < 4; j++)
{
tar[i * 4 + j] = tar[i * 4 + j] ^ w[(k + 1) * 16 + i * 4 + j];
} // end of for
} // end of for
return (tar);
} // End of the function
function md5(src)
{
var str = new String(src);
tar = new Array(16);
res = new Array(16);
for (i = 0; i < src.length || i < 16; i++)
{
res[i] = Number(str.charCodeAt(i)) ^ i * 4;
} // end of for
for (i = 0; i < 4; i++)
{
for (j = 0; j < 4; j++)
{
tar[i * 4 + j] = (res[j * 4 + i] + 256) % 256;
} // end of for
} // end of for
return (tar);
} // End of the function
function array2HStr(src)
{
res = "";
for (i = 0; i < 16; i++)
{
res = res + (hex[src[i] >> 4] + hex[src[i] % 16]);
} // end of for
return (res);
} // End of the function
function encrypt(plain, pass)
{
ikey = md5(pass);
for (i = 0; i < 4; i++)
{
for (j = 0; j < 4; j++)
{
ikey[i * 4 + j] = ikey[i * 4 + j] ^ initKey[i * 4 + j];
} // end of for
} // end of for
return (array2HStr(rijndael(md5(plain), ikey)));
} // End of the function
initKey = new Array(232, 179, 9, 49, 17, 182, 147, 22, 67, 153, 48, 202, 41, 89, 251, 31);
hex = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F");