Per la crittografia bidirezionale, la maggior parte degli algoritmi utilizza un operatore x o, confrontando il codice binario di una chiave e i dati binari dell'input, questo potrebbe non essere adatto a te allora, dato che non puoi usare una chiave ... tuttavia , questo è come funziona:
Dati di input: 10011101101001
Chiave: 123 = 1111011
La chiave è più piccola dell'input, quindi deve essere ripetuta:
Dati di input: 10011101101001
Chiave: 123 = 11110111111011
(in Java usa una variabile per contare in un ciclo per ogni o un ciclo while attraverso tutti i bit dell'input di dati ...) Ora usa l'x o il principal per generare il ciclo di risultati enciclati (due modi di hash) attraverso ciascuno bit nei dati di input e confrontarli con il bit corrispondente nella chiave, se identici, aggiungere 0 al risultato, in caso contrario, aggiungere 1 al risultato ... Il risultato sarà:
Dati di input: 10011101101001
Chiave: 123 = 11110111111011
Risultato = 01101010010010
Per decrittografare i dati, basta eseguire il trogolo dei dati crittografati:
Dati di input: 01101010010010
Chiave: 123 = 11110111111011
Risultato = 10011101101001
Idealmente dovresti usare una funzione di hash come sha, md5, ripemd ecc ... per generare la chiave, quindi trasformarla in binario ... se non puoi usare un algoritmo premade, potresti creare il tuo algoritmo per generare la chiave da confrontare ... basta fare in modo che tutti i bit nell'input dipendano l'uno dall'altro per generare il risultato ... esempio:
password: abcdefghi
abc = 123456789 (a = 1, b = 2, c = 3 ecc ...)
ora fai un ciclo ogni bit (cifra) e aggiungili insieme a un contatore, ad esempio:
Numero = 0
risultato=""
foreach digit in password do {
risultato = risultato & (Cifre risultato + [count-1]) * count)
count = count + 1
}
risultato =
(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
risultato chiave = 16152845669120153
Binario: 111001011000101110110101110100001110000011100010011001
(Questo è un esempio molto povero tu ... dovresti pensare ad un buon algoritmo ... uno in cui i due input iniziali si combinano e formano il terzo, e poi il terzo e il quarto vanno insieme al risultato della prima combinazione per generare il risultato del fith ...)
ma poi di nuovo, se non puoi usare una chiave, non puoi usare questo ...