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