MyLiveChat provides an encryption algorithm for Basic Encrytion Mode.
            If you are using C#, ASP,
            PHP or Java,
            you can integrate MyLiveChat to your web application
            with membership by basic encryption algorithm.
        
     
 
    
    
        int EncryptLoopCount = 4;
public string BasicEncrypt(string data, string encryptkey)
{
     if (string.IsNullOrEmpty(data))
         throw (new ArgumentNullException("data"));
     if (string.IsNullOrEmpty(encryptkey))
         throw (new ArgumentNullException("encryptkey"));
     int[] vals = MakeArray(data, true);
     int[] keys = MakeArray(encryptkey, false);
     for (int t = 0; t < EncryptLoopCount; t++)
     {
         for (int i = 0; i < vals.Length; i++)
         {
             int v = vals[i];
             int im = (v + i) % 5;
             for (int x = 0; x < vals.Length; x++)
             {
                 if (x == i)
                     continue;
                 if (x % 5 != im)
                     continue;
                 for (int y = 0; y < keys.Length; y++)
                 {
                     int k = keys[y];
                     if (k == 0)
                         continue;
                     vals[x] += v % k;
                 }
             }
         }
     }
     return BasicFormat(vals);
}
 
public string BasicFormat(int[] vals)
{
     StringBuilder sb = new StringBuilder();
     foreach (int i in vals)
     {
         if (sb.Length > 0)
            sb.Append("-");
         sb.Append(i);
     }
     return sb.ToString();
}
   
public int[] MakeArray(string str, bool random)
{
     int len = (int)Math.Pow(2, Math.Floor(Math.Log(str.Length, 2)) + 1) + 8;
     if (len < 32) len = 32;
     int[] arr = new int[len];
     if (random)
     {
         Random r = new Random();
         for (int i = 0; i < arr.Length; i++)
             arr[i] = str[r.Next() % str.Length];
         int start = 1 + r.Next() % (len - str.Length - 2);
         for (int i = 0; i < str.Length; i++)
             arr[start + i] = str[i];
         arr[start - 1] = 0;
         arr[start + str.Length] = 0;
     }
     else
     {
         for (int i = 0; i < arr.Length; i++)
            arr[i] = str[i % str.Length];
    }
     return arr;
}
    
    
 
    
    
        Public Function MakeArray(str, random)
 		Dim arrlen
         arrlen = 2^(Fix(log(2)/log(Len(str))) + 1) + 8
         If arrlen < 32 Then
 			arrlen = 32
 		End If
         ReDim arr(arrlen-1)
 		If random=true Then
 			Randomize Timer
             For i = 0 to arrlen-1
                 arr(i) = Asc(Mid(str,Int((9999 - 1000 + 1) * Rnd + 1000) mod Len(str) + 1,1))
 			Next
             start = 1 + Int((9999 - 1000 + 1) * Rnd + 1000) mod (arrlen - Len(str) - 2)
             For i = 1 to Len(str)
                 arr(start + i) = Asc(Mid(str,i,1))
 			Next
             arr(start - 1) = 0
             arr(start + Len(str)) = 0
         Else
             For i = 0 to arrlen-1
                 arr(i) = Asc(Mid(str,i mod Len(str) + 1,1))
 			Next
         End If
         MakeArray=arr
  End Function
 Public Function BasicFormat(vals)
         Dim sb
 		sb = ""
         For i=0 to UBound(vals)
             If Len(sb) > 0 Then
                 sb = sb & "-"
 			End if
             sb = sb & (vals(i)&"")
         Next
 		BasicFormat=sb
End Function
 Public Function BasicEncrypt(data, encryptkey)
         If data=null Or Len(Trim(data))=0 Then
 			Err.Raise6
 		End If
         If encryptkey=null Or Len(Trim(encryptkey))=0 Then
 			Err.Raise6
 		End If
         vals = MakeArray(data, true)
         keys = MakeArray(encryptkey, false)
 		EncryptLoopCount = 4
         for t = 0 to EncryptLoopCount-1        
             for i = 0 to UBound(vals)
                 v = vals(i)
                 im = (v + i) mod 5
                 for x = 0 to UBound(vals)
                     if x <> i And x mod 5 = im Then
 						for y = 0 to UBound(keys)							
 							k = keys(y)
 							if k <> 0 Then
 								vals(x) = vals(x) + v mod k
 							End if
 						Next
 					End If
                 Next
             Next
         Next
         BasicEncrypt=BasicFormat(vals)
   End Function
    
    
 
    
    
        function BasicEncrypt($data, $encryptkey)
{
 	$EncryptLoopCount = 4;
 	$vals = MakeArray($data, true);
 	$keys = MakeArray($encryptkey, false);
 	$len = sizeof($vals);
 	$len2 = sizeof($keys);
 	for ($t = 0; $t < $EncryptLoopCount; $t++)
 	{
 		for ($i = 0; $i < $len; $i++)
 		{
 			$v = $vals[$i];
 			$im = ($v + $i) % 5;
 			for ($x = 0; $x < $len; $x++)
 			{
 				if ($x == $i)
 					continue;
 				if ($x % 5 != $im)
 					continue;
 				for ($y = 0; $y <$len2; $y++)
 				{
 					$k = $keys[$y];
 					if ($k == 0)
 						continue;
 					$vals[$x] += $v % $k;
 				}
 			}
 		}
 	}
 	return implode('-', $vals);
}
function MakeArray($str, $random)
{
 	$len = pow(2, floor(log(strlen($str), 2)) + 1) + 8;
 	if ($len < 32) $len = 32;
 	$arr = Array();
 	$strarr = str_split($str);
 	if ($random==true)
 	{
 		for ($i = 0; $i < $len; $i++)
 			$arr[] = ord($strarr[rand() % strlen($str)]);
 		$start = 1 + rand() % ($len - strlen($str) - 2);
 		for ($i = 0; $i < strlen($str); $i++)
 			$arr[$start + $i] = ord($strarr[$i]);
 		$arr[$start - 1] = 0;
 		$arr[$start + strlen($str)] = 0;
 	}
 	else
 	{
 		for ($i = 0; $i < $len; $i++)
 			$arr[] = ord($strarr[$i % strlen($str)]);
 	}
 	return $arr;
}
    
    
 
    
    
        int EncryptLoopCount = 4;
public int[] MakeArray(String str, Boolean random)
{
     int len = (int)Math.pow(2, Math.floor(Math.log(2)/Math.log(str.length())) + 1) + 8;
     if (len < 32) len = 32;
     int[] arr = new int[len];
     if (random)
     {
         Random r = new Random();
         for (int i = 0; i < arr.length; i++)
             arr[i] = str.charAt(r.nextInt(9999) % str.length());
         int start = 1 + r.nextInt(9999) % (len - str.length() - 2);
         for (int i = 0; i < str.length(); i++)
             arr[start + i] = str.charAt(i);
         arr[start - 1] = 0;
         arr[start + str.length()] = 0;
     }
     else
     {
         for (int i = 0; i < arr.length; i++)
             arr[i] = str.charAt(i % str.length());
     }
     return arr;
}
public String BasicFormat(int[] vals)
{
     StringBuilder sb = new StringBuilder();
     for (int i=0;i
     {
         if (sb.length() > 0)
             sb.append("-");
         sb.append(vals[i]);
     }
     return sb.toString();
}
public String BasicEncrypt(String data, String encryptkey)
{
     if (data==null || data.trim() == "")
         throw new IllegalArgumentException("data");
     if (encryptkey == null || encryptkey == "")
         throw new IllegalArgumentException("encryptkey");
     int[] vals = MakeArray(data, true);
     int[] keys = MakeArray(encryptkey, false);
     for (int t = 0; t < EncryptLoopCount; t++)
     {
         for (int i = 0; i < vals.length; i++)
         {
             int v = vals[i];
             int im = (v + i) % 5;
             for (int x = 0; x < vals.length; x++)
             {
                 if (x == i)
                     continue;
                 if (x % 5 != im)
                     continue;
                 for (int y = 0; y < keys.length; y++)
                 {
                     int k = keys[y];
                     if (k == 0)
                         continue;
                     vals[x] += v % k;
                 }
             }
         }
     }
     return BasicFormat(vals);
}