Página 1 de 1

[Java] Cifrado por Transposición

Publicado: 07 Oct 2014, 00:08
por Slek
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!

Re: [Java] Cifrado por Transposición

Publicado: 08 Oct 2014, 00:14
por Filisko
wuaw, nunca escuche acerca de esto pero tiene buena pinta, saludos!

Re: [Java] Cifrado por Transposición

Publicado: 08 Oct 2014, 01:07
por _ROOTt_
gracias master.....

saludos

Re: [Java] Cifrado por Transposición

Publicado: 10 Oct 2014, 11:01
por Slek
Gracias a vosotros!

Si os interesa, he publicado otro cifrado por Transposición: [Java] Cifrado por Transposición de columnas

Un saludo!

Re: [Java] Cifrado por Transposición

Publicado: 10 Oct 2014, 22:31
por Wal999
bueno hermano!