Newer
Older
import it.uniupo.byteLib.BitStringGenerator;
import it.uniupo.byteLib.NonPrintableCharactersException;
import it.uniupo.byteLib.Tools;
import java.util.Arrays;
public class BruteForce {
public static void main(String[] args) throws NonPrintableCharactersException {
{
System.out.println("OTP-3");
var c = Tools.readByteFlow("OTP-3");
bruteforce(c, 3);
}
{
System.out.println("keystr-1x3");
var c = Tools.readByteFlow("keystr-1x3");
bruteforce(c, 1);
}
}
private static void bruteforce(byte[] c, int n) throws NonPrintableCharactersException {
var bsGen = new BitStringGenerator(n);
bsGen.zeroInit();
while (!bsGen.isMax()) {
var repetition = bsGen.nextVal();
var key = Arrays.copyOf(repetition, n);
for (int i = repetition.length - 1; i < n; i++) {
key[i] = repetition[i % repetition.length];
}
var attempt = Xor.xorCipher(c, key);
if (Tools.isUText(attempt)) {
System.out.println(Tools.bytesToString(attempt));
}
}
}
}