/* package whatever; // don't place package name! */
import java.math.BigInteger;
class YatinRSA{
public static void main
(String[] args
) { System.
out.
println("Testing Yatin's RSA..\n");
int p = 5;
int q = 17;
int n = 85; // p * q - modulus
int lcm = 16; // (lcm(p-1,q-1))
int e = 3; // coprime to lcm - exponent
int d = 11; // de % n = 1 - privatekey
for (int i = 1; i < 101; i++) {
algorithm(n,e,d,i);
}
}
static void algorithm(int modulus, int exponent, int privatekey, int input) {
bigModulus);
bigModulus);
System.
out.
printf("Value: %3s\tEncypted: %3s\tDecypts? %s\n",
input,
encrytion,
input == decyption.intValue());
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEubWF0aC5CaWdJbnRlZ2VyOwoKY2xhc3MgWWF0aW5SU0F7CiAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgU3lzdGVtLm91dC5wcmludGxuKCJUZXN0aW5nIFlhdGluJ3MgUlNBLi5cbiIpOwoKICAgIGludCBwID0gNTsKICAgIGludCBxID0gMTc7CiAgICBpbnQgbiA9IDg1OyAgIC8vIHAgKiBxICAgICAgICAgICAgLSBtb2R1bHVzCgogICAgaW50IGxjbSA9IDE2OyAvLyAobGNtKHAtMSxxLTEpKQogICAgaW50IGUgPSAzOyAgICAvLyBjb3ByaW1lIHRvIGxjbSAgIC0gZXhwb25lbnQKCiAgICBpbnQgZCA9IDExOyAgIC8vIGRlICUgbiA9IDEgICAgICAgLSBwcml2YXRla2V5CgogICAgZm9yIChpbnQgaSA9IDE7IGkgPCAxMDE7IGkrKykgewogICAgICBhbGdvcml0aG0obixlLGQsaSk7CiAgICB9ICAgIAogIH0KICAKICBzdGF0aWMgdm9pZCBhbGdvcml0aG0oaW50IG1vZHVsdXMsIGludCBleHBvbmVudCwgaW50IHByaXZhdGVrZXksIGludCBpbnB1dCkgewogIAlCaWdJbnRlZ2VyIGJpZ01vZHVsdXMgPSBCaWdJbnRlZ2VyLnZhbHVlT2YobW9kdWx1cyk7CgogICAgQmlnSW50ZWdlciBlbmNyeXRpb24gPSAKICAgICAgIEJpZ0ludGVnZXIudmFsdWVPZihpbnB1dCkKICAgICAgICAgICAgICAgICAubW9kUG93KEJpZ0ludGVnZXIudmFsdWVPZihleHBvbmVudCksCiAgICAgICAgICAgICAgICAgICAgICAgICBiaWdNb2R1bHVzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgQmlnSW50ZWdlciBkZWN5cHRpb24gPSAKICAgICAgIGVuY3J5dGlvbi5tb2RQb3coQmlnSW50ZWdlci52YWx1ZU9mKHByaXZhdGVrZXkpLAogICAgICAgICAgICAgICAgICAgICAgICBiaWdNb2R1bHVzKTsKICAgICAgICAgICAgICAgICAgCiAgICBTeXN0ZW0ub3V0LnByaW50ZigiVmFsdWU6ICUzc1x0RW5jeXB0ZWQ6ICUzc1x0RGVjeXB0cz8gJXNcbiIsCiAgICAgICAgICAgICAgICAgICAgICBpbnB1dCwKICAgICAgICAgICAgICAgICAgICAgIGVuY3J5dGlvbiwKICAgICAgICAgICAgICAgICAgICAgIGlucHV0ID09IGRlY3lwdGlvbi5pbnRWYWx1ZSgpKTsgICAgICAKICB9Cgp9ICAgICAgIAogIAk=