Untitled

 avatar
unknown
plain_text
a month ago
2.4 kB
4
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); 
 
} 
  
} 
Leave a Comment