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);
}