Untitled
unknown
plain_text
a year ago
2.4 kB
8
Indexable
class HillDemo
{
public static int[][] keymat = new int[][] { { 1, 2, 1 }, { 2, 3, 2 }, { 2, 2, 1 } };
public static int[][] invkeymat = new int[][] { { -1, 0, 1}, { 2, -1, 0 }, { -2, 2, -1 } };
public static String key = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
private static String encode(char a, char b, char c)
{
String ret = "";
int x,y,z;
int posa = (int) a - 65;
int posb = (int) b - 65;
int posc = (int) c - 65;
x = posa * keymat[2][0];
y = posa * keymat[2][1];
z = posa * keymat[2][2];
a = key.charAt(x % 26);
b =key.charAt(y % 26);
keymat[0][0] + posb * keymat[1][0] + posc * keymat[0][1]
+
posb
* keymat[1][1]
+
posc
*
keymat[0][2]
+
posb
* keymat[1][2]
+
posc
*
c = key.charAt(z % 26);
ret = "" + a + b + c; return ret;
}
private static String decode(char a, char b, char c)
{
String ret = "";
int x, y, z;
int posa = (int) a - 65;
int posb = (int) b - 65;
int posc =(int) c - 65;
x = posa * invkeymat[0][0] + posb * invkeymat[1][0] + posc
* invkeymat[2][0];
y = posa * invkeymat[0][1] + posb * invkeymat[1][1] + posc
* invkeymat[2][1];
z = posa * invkeymat[0][2] + posb * invkeymat[1][2] + posc
* invkeymat[2][2];
a = key.charAt((x % 26 < 0) ? (26 + x % 26) : (x % 26));
b = key.charAt((y % 26 < 0) ? (26 + y % 26) : (y % 26));
c = key.charAt((z % 26 < 0) ? (26 + z % 26) : (z % 26));
ret = "" + a + b + c; return ret;
}
public static void main(String[] args) throws Exception
{
String msg="code is ready";
String enc = "";
String dec = "";
int n;
System.out.println("Inpmessage : " + msg);
msg = msg.toUpperCase();
msg = msg.replaceAll("\\s", "");
n = msg.length() % 3;
if (n != 0)
{
for (int i = 1; i <= (3 - n); i++)
{
msg += 'Z';
}
}
System.out.println("padded message : " + msg);
char[] pdchars = msg.toCharArray();
for (int i = 0; i < msg.length(); i += 3)
{
enc += encode(pdchars[i], pdchars[i + 1], pdchars[i + 2]);
}
System.out.println("encoded message : " + enc);
char[] dechars = enc.toCharArray();
for (int i = 0; i < enc.length(); i += 3) {
dec += decode(dechars[i], dechars[i + 1], dechars[i + 2]);
}
System.out.println("decoded message : " + dec);
}
}
Editor is loading...
Leave a Comment