Interfaz de cifrado:
[Cipher.java]
/*
* Transposition Cipher Interface
* Author: Slek (06/10/14)
*/
public interface Cipher {
public byte[] encrypt(byte[] m);
public byte[] decrypt(byte[] c);
}
Cifrado en sí:[Basic.java]
/*
* Basic Transposition Cipher
* Author: Slek (06/10/14)
*/
public class Basic implements Cipher {
@Override
public byte[] encrypt(byte[] m) {
int l = m.length;
int n = (l/2);
byte[] c = new byte[l];
int i = 0;
int j = n + (l % 2);
int k = 0;
while (i < n) {
c[k++] = m[i++];
c[k++] = m[j++];
}
if (k < l) c[k++] = m[i++];
return c;
}
@Override
public byte[] decrypt(byte[] c) {
int l = c.length;
int n = (l/2);
byte[] m = new byte[l];
int i = 0;
int j = n + (l % 2);
int k = 0;
while (i < n) {
m[i++] = c[k++];
m[j++] = c[k++];
}
if (k < l) m[i++] = c[k++];
return m;
}
}
Ejemplo:[Main.java]
public class Main {
public static void main(String[] args) {
String message = "esto es una prueba";
Cipher cipher = new Basic();
byte[] c;
System.out.println(new String(c = cipher.encrypt(message.getBytes())));
System.out.println(new String(cipher.decrypt(c)));
}
}
Un saludo!