Implementcaión de un cifrado de transposición simple. Lo más curioso de esta técnica de cifrado es que es completamente independiente del alfabeto de entrada. En la implementación he usado el tipo byte, puesto que es el más utilizado.

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!
github.com/Slek-Z
bueno hermano!
* _*
<\--♥
_/|_ "Para crear enemigos no es necesario declarar la guerra, es sólo decir lo que piensa."
Responder

Volver a “Fuentes”