Para el cifrado bidireccional, la mayoría de los algoritmos utilizan una x o un operador, comparando el código binario de una clave y los datos binarios de la entrada, esto podría no ser adecuado para usted, ya que no puede usar una clave ... sin embargo , así es como funciona:
Datos de entrada: 10011101101001
Clave: 123 = 1111011
La clave es más pequeña que la entrada, por lo que debe repetirse:
Datos de entrada: 10011101101001
Clave: 123 = 11110111111011
(en Java use una variable para contar en un bucle para cada uno o un tiempo en todos los bits de la entrada de datos ...) Ahora use x o principal para generar el resultado encriptado (hash bidireccional) en cada uno de los bucles. bit en los datos de entrada y compárelo con el bit correspondiente en la clave, si es idéntico, agregue 0 al resultado; si no, agregue 1 al resultado ... El resultado será:
Datos de entrada: 10011101101001
Clave: 123 = 11110111111011
Resultado = 01101010010010
Para descifrar los datos, simplemente ejecute el canal de datos cifrados:
Datos de entrada: 01101010010010
Clave: 123 = 11110111111011
Resultado = 10011101101001
Lo ideal sería usar una función hash como sha, md5, ripemd, etc ... para generar la clave, luego convertirla en binario ... si no puedes usar un algoritmo prefabricado, podrías crear tu propio algoritmo para generar la clave que se va a comparar ... simplemente haga que todos los bits en la entrada dependan unos de otros para generar el resultado ... ejemplo:
contraseña: abcdefghi
abc = 123456789 (a = 1, b = 2, c = 3, etc ...)
haga un bucle de cada bit (dígito) y agréguelos junto con un contador, por ejemplo:
cuenta = 0
resultado=""
foreach digit in password do
resultado = resultado & (dígito + resultado [cuenta-1]) * cuenta)
cuenta = cuenta + 1
}
resultado =
(1 + 0) * 1 = 1
(2 + 1) * 2 = 6
(3 + 2) * 3 = 15
(4 + 3) * 4 = 28
(5 + 4) * 5 = 45
(6 + 5) * 6 = 66
(7 + 6) * 7 = 91
(8 + 7) * 8 = 120
(9 + 8) * 9 = 153
resultado clave = 16152845669120153
Binario: 111001011000101110110101110100001110000011100010011001
(Este es un ejemplo muy malo, usted ... debería pensar a través de un buen algoritmo ... uno en el que las dos entradas iniciales se combinan y forman la tercera, y luego la tercera y la cuarta van juntas con el resultado de la primera combinación para generar el primer resultado ...)
pero, de nuevo, si no puedes usar una clave, no puedes usar esto ...